[Закрываются] скрытые функции ASP.NET

Многие объяснения уже присутствуют, чтобы объяснить, как это происходит и как это исправить, но вы также должны следовать рекомендациям, чтобы избежать NullPointerException вообще.

См. также: A хороший список лучших практик

Я бы добавил, очень важно, хорошо использовать модификатор final. Использование "окончательной" модификатор, когда это применимо в Java

Сводка:

  1. Используйте модификатор final для обеспечения хорошей инициализации.
  2. Избегайте возврата null в методы, например, при возврате пустых коллекций.
  3. Использовать аннотации @NotNull и @Nullable
  4. Быстрое завершение работы и использование утверждений, чтобы избежать распространения нулевых объектов через все приложение, когда они не должен быть пустым.
  5. Сначала используйте значения с известным объектом: if("knownObject".equals(unknownObject)
  6. Предпочитают valueOf() поверх toString ().
  7. Используйте null safe StringUtils StringUtils.isEmpty(null).

292
задан 22 revs, 7 users 52% 23 May 2017 в 01:54
поделиться

46 ответов

Я думал, что это было аккуратно, когда я вывел xmlDocument () в маркировку, и это отобразило использование, это - xsl, преобразовывает.

7
ответ дан Paulj 23 November 2019 в 01:38
поделиться

Присоедините класс, расположенный в Вашей папке App_Code в Ваш Глобальный файл Класса приложений.

ASP.NET 2.0 - Global.asax - Код Позади файла .

Это работает в Visual Studio 2008 также.

5
ответ дан cllpse 23 November 2019 в 01:38
поделиться

Можно найти любое управление при помощи свойство UniqueID:

Label label = (Label)Page.FindControl("UserControl1$Label1");
4
ответ дан Atanas Korchev 23 November 2019 в 01:38
поделиться

свойство ClientScript на Объекте страницы.

2
ответ дан Canavar 23 November 2019 в 01:38
поделиться

Это походит на огромный, неопределенный вопрос... Но я добавлю Отражение, поскольку оно позволило мне делать некоторые невероятно мощные вещи как сменный DALs и такой.

-6
ответ дан GEOCHET 23 November 2019 в 01:38
поделиться

Мне пришла в голову одна особенность, иногда вам нужно скрыть какую-то часть вашей страницы от краулеров. вы можете сделать это с помощью javascript или с помощью этого простого кода:

if (Request.Browser.Crawler){
        HideArticleComments();
9
ответ дан 23 November 2019 в 01:38
поделиться

Метод EnsureChildControls : он проверяет дочерние элементы управления, если они инициированы. Если дочерние элементы управления не инициированы, он вызывает метод CreateChildControls.

5
ответ дан 23 November 2019 в 01:38
поделиться

Моя команда часто использует это как взлом:

WebRequest myRequest = WebRequest.Create("http://www.google.com");
WebResponse myResponse = myRequest.GetResponse();
StreamReader sr = new StreamReader(myResponse.GetResponseStream());

// here's page's response loaded into a string for further use

String thisReturn = sr.ReadToEnd().Trim();

Он загружает ответ веб-страницы в виде строки. Вы также можете отправить параметры сообщения.

Мы используем его вместо ASCX / AJAX / WebServices, когда нам нужно что-то дешевое и быстрое. По сути, это быстрый способ доступа к веб-контенту через серверы. Фактически, мы вчера просто окрестили его «Веб-сервис Redneck».

12
ответ дан 23 November 2019 в 01:38
поделиться

Свойство Request.IsLocal:

Указывает, исходит ли текущий запрос с локального компьютера или нет.

if( Request.IsLocal )
{
   LoadLocalAdminMailSettings();
}
else
{
   LoadServerAdminMailSettings();
}
7
ответ дан 23 November 2019 в 01:38
поделиться

Подобно решению optimizeCompilations = ”true”, здесь есть еще одно решение, которое сокращает время ожидания между builds (очень хорошо, особенно если вы работаете с большим проектом): создайте диск с оперативной памятью (то есть с помощью RamDisk) и измените ваши временные файлы ASP.NET по умолчанию на этот диск с памятью.

Полная информация о том, как это сделать, находится в моем блоге: http://www.wagnerdanda.me/2009/11/speeding-up-build-times-in-asp-net-with-ramdisk /

Обычно вы сначала настраиваете RamDisk (опять же, в моем блоге есть ссылка на бесплатный ramdisk), а затем вы меняете свой web.config следующим образом:

 <system.web>
 ....
     <compilation debug="true" tempDirectory="R:\ASP_NET_TempFiles\">
     ....
     </compilation>
 ....
 </system.web>

Это значительно увеличивает время моей разработки, вам просто нужно инвестируйте в память для вашего компьютера :)

Удачного программирования!

Вагнер Данда

8
ответ дан 23 November 2019 в 01:38
поделиться

Знаете ли вы, можно запустить ASP.NET за пределами IIS или Visual Studio?

Все время выполнения упаковано и готовы размещать в любом процессе, который хочет дать ему пытаться. Использование ApplicationHost , httpruntime и htthapplication Классы, вы тоже можете размолить эти страницы .aspx и получите блестящий HTML-вывод из них.

HostingClass host = ApplicationHost.CreateApplicationHost(typeof(HostingClass), 
                                            "/virtualpath", "physicalPath");
host.ProcessPage(urlToAspxFile); 

И ваш класс хостинга:

public class HostingClass : MarshalByRefObject
{
    public void ProcessPage(string url)
    {
        using (StreamWriter sw = new StreamWriter("C:\temp.html"))
        {
            SimpleWorkerRequest worker = new SimpleWorkerRequest(url, null, sw);
            HttpRuntime.ProcessRequest(worker);
        }
                    // Ta-dah!  C:\temp.html has some html for you.
    }
}
11
ответ дан 23 November 2019 в 01:38
поделиться

Если вы используете веб-службы вместо служб WCF, вы все равно можете использовать стандартное членство в .Net для обеспечения аутентификации и поведения сеанса входа в наборе веб-сервисы аналогично тому, как вы защищаете веб-сайт с помощью аутентификации форм членства и без необходимости в специальном сеансе и / или реализации заголовков мыла, просто вызывая System.Web.Security.FormsAuthentication.SetAuthCookie (userName, false ) [после вызова Membership.ValidateUser (userName, password), конечно] для создания файла cookie в ответе, как если бы пользователь вошел в систему через веб-форму. Затем вы можете получить этот файл cookie аутентификации с Response.Cookies []. Value и вернуть его в виде строки пользователю , которую можно использовать для аутентификации пользователя в последующих вызовах путем повторного создания файла cookie в Application_BeginRequest путем извлечения
{{ 1}} параметр вызова метода cookie из Request.InputStream и воссоздание cookie аутентификации перед аутентификацией членства. генерирует запрос таким образом, чтобы провайдер членства был обманут и узнает, что запрос аутентифицирован, и обеспечит соблюдение всех его правил.

Пример сигнатуры веб-метода для возврата этого файла cookie пользователю: строка Логин (имя пользователя, пароль)

Пример последующего вызова веб-метода будет: строка DoSomething (строка authcookie , string methodParam1, int methodParam2 и т.д. и т.д.), где вам нужно извлечь параметр authcookie (который является значением, полученным из метода входа в систему) из Request.InputStreamis

. Это также имитирует сеанс входа в систему и вызов FormsAuthentication.SignOut в веб-методе, например этот выход (authcookie) заставит пользователя снова войти в систему.

2
ответ дан 23 November 2019 в 01:38
поделиться

Многие люди упоминали, как оптимизировать код при перекомпиляции. Недавно я обнаружил, что могу выполнять большую часть своей разработки (часть кода программной части) на странице aspx, полностью пропуская этап сборки. Просто сохраните файл и обновите свою страницу. Все, что вам нужно сделать, это заключить свой код в следующий тег:

<script runat="server">

   Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
     Response.Write("Look Ma', I didn't even had to build!")
   End Sub

</script>

Как только вы закончите, просто переместите все в код программной части, скомпилируйте, протестируйте, все работает, и вуаля!

-D

4
ответ дан 23 November 2019 в 01:38
поделиться

Одна из вещей, которые я использую для работы с несколькими версиями VB, VBScript и VB.NET, - это преобразование значений набора записей в строку, чтобы исключить множественные тесты на NULL или пробел. т.е. Trim (rsData ("FieldName"). Value & "")
В случае целочисленного значения это будет: CLng ("0" & ​​Trim (rsData ("FieldName") .Value & ""))

-3
ответ дан 23 November 2019 в 01:38
поделиться

После того, как веб-сайт был опубликован и развернут на рабочем сервере, если нам нужно внести некоторые изменения в событие нажатия кнопки на стороне сервера. Мы можем переопределить существующее событие щелчка, используя ключевое слово new на самой странице aspx.

Пример

Метод скрытого кода

 Protected void button_click(sender object, e System.EventArgs) 
  {
     Response.Write("Look Ma', I Am code behind code!")  
  }

Переопределенный метод:

<script runat="server">   
   Protected void new button_click(sender object, e System.EventArgs) 
  {
     Response.Write("Look Ma', I am overrided method!")  
  }

</script

Таким образом мы можем легко исправить ошибки рабочего сервера без повторного развертывания.

-6
ответ дан 23 November 2019 в 01:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: