Многие объяснения уже присутствуют, чтобы объяснить, как это происходит и как это исправить, но вы также должны следовать рекомендациям, чтобы избежать NullPointerException
вообще.
См. также: A хороший список лучших практик
Я бы добавил, очень важно, хорошо использовать модификатор final
. Использование "окончательной" модификатор, когда это применимо в Java
Сводка:
final
для обеспечения хорошей инициализации. @NotNull
и @Nullable
if("knownObject".equals(unknownObject)
valueOf()
поверх toString (). StringUtils
StringUtils.isEmpty(null)
. Я думал, что это было аккуратно, когда я вывел xmlDocument () в маркировку, и это отобразило использование, это - xsl, преобразовывает.
Присоедините класс, расположенный в Вашей папке App_Code в Ваш Глобальный файл Класса приложений.
ASP.NET 2.0 - Global.asax - Код Позади файла .
Это работает в Visual Studio 2008 также.
Можно найти любое управление при помощи свойство UniqueID:
Label label = (Label)Page.FindControl("UserControl1$Label1");
Это походит на огромный, неопределенный вопрос... Но я добавлю Отражение, поскольку оно позволило мне делать некоторые невероятно мощные вещи как сменный DALs и такой.
Мне пришла в голову одна особенность, иногда вам нужно скрыть какую-то часть вашей страницы от краулеров. вы можете сделать это с помощью javascript или с помощью этого простого кода:
if (Request.Browser.Crawler){
HideArticleComments();
Метод EnsureChildControls : он проверяет дочерние элементы управления, если они инициированы. Если дочерние элементы управления не инициированы, он вызывает метод CreateChildControls.
Моя команда часто использует это как взлом:
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».
Указывает, исходит ли текущий запрос с локального компьютера или нет.
if( Request.IsLocal )
{
LoadLocalAdminMailSettings();
}
else
{
LoadServerAdminMailSettings();
}
Подобно решению 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>
Это значительно увеличивает время моей разработки, вам просто нужно инвестируйте в память для вашего компьютера :)
Удачного программирования!
Вагнер Данда
Знаете ли вы, можно запустить 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.
}
}
Если вы используете веб-службы вместо служб 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) заставит пользователя снова войти в систему.
Многие люди упоминали, как оптимизировать код при перекомпиляции. Недавно я обнаружил, что могу выполнять большую часть своей разработки (часть кода программной части) на странице 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
Одна из вещей, которые я использую для работы с несколькими версиями VB, VBScript и VB.NET, - это преобразование значений набора записей в строку, чтобы исключить множественные тесты на NULL или пробел. т.е. Trim (rsData ("FieldName"). Value & "")
В случае целочисленного значения это будет: CLng ("0" & Trim (rsData ("FieldName") .Value & ""))
После того, как веб-сайт был опубликован и развернут на рабочем сервере, если нам нужно внести некоторые изменения в событие нажатия кнопки на стороне сервера. Мы можем переопределить существующее событие щелчка, используя ключевое слово 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
Таким образом мы можем легко исправить ошибки рабочего сервера без повторного развертывания.