Я получаю исключения NullReferenceExeceptions в кажущемся случайном времени в моем приложении и не могу отследить, что может быть причиной ошибки.
Я приложу все усилия, чтобы описать сценарий и настройку.
Любые предложения приветствуются!
C # .net 3.5 Forms Application, но я использую библиотеку WebFormRouting, созданную Филом Хааком (http://haacked.com/archive/2008/03/11/using-routing-with-webforms.aspx), для использования библиотек маршрутизации .net (обычно используется в сочетании с MVC) - использование переписывание URL для моих URL.
В моей базе 60 таблиц. Все нормализовано. Это просто масштабное приложение. (SQL Server 2008)
Все запросы построены с использованием Linq to SQL в коде (без SP). Каждый раз, когда создается новый экземпляр моего контекста данных. Я использую только один контекст данных со всеми отношениями, определенными в 4 диаграммах отношений в SQL Server.
контекст данных создается много. Я позволил закрытию контекста данных обрабатываться автоматически. Я слышал аргументы обеих сторон о том, следует ли вам автоматически закрыться или сделать это самостоятельно. В этом случае я не делаю это сам.
Кажется, не имеет значения, создаю ли я много экземпляров контекста данных или только один.
Например, у меня есть кнопка голосования. со следующим кодом, и это, вероятно, ошибки 1 в 10-20 раз.
protected void VoteUpLinkButton_Click(object sender, EventArgs e)
{
DatabaseDataContext db = new DatabaseDataContext();
StoryVote storyVote = new StoryVote();
storyVote.StoryId = storyId;
storyVote.UserId = Utility.GetUserId(Context);
storyVote.IPAddress = Utility.GetUserIPAddress();
storyVote.CreatedDate = DateTime.Now;
storyVote.IsDeleted = false;
db.StoryVotes.InsertOnSubmit(storyVote);
db.SubmitChanges();
// If this story is not yet published, check to see if we should publish it. Make sure that
// it is already approved.
if (story.PublishedDate == null && story.ApprovedDate != null)
{
Utility.MakeUpcommingNewsPopular(storyId);
}
// Refresh our page.
Response.Redirect("/news/" + category.UniqueName + "/"
+ RouteData.Values["year"].ToString() + "/"
+ RouteData.Values["month"].ToString() + "/"
+ RouteData.Values["day"].ToString() + "/"
+ RouteData.Values["uniquename"].ToString());
}
Последнее, что я попробовал, была настройка флага «Автоматическое закрытие» на SQL Server. Это было установлено на true, и я изменил на false. Кажется, не справился, хотя и имел хороший общий эффект.
Вот подробное описание, которое не было поймано. Я также получаю немного другие ошибки, когда ловлюсь на моих попытках / ловушках.
System.Web.HttpUnhandledException: Exception of type 'System.Web.HttpUnhandledException' was thrown. --->
System.NullReferenceException: Object reference not set to an instance of an object. at
System.Web.Util.StringUtil.GetStringHashCode(String s) at
System.Web.UI.ClientScriptManager.EnsureEventValidationFieldLoaded() at
System.Web.UI.ClientScriptManager.ValidateEvent(String uniqueId, String argument) at
System.Web.UI.WebControls.TextBox.LoadPostData(String postDataKey, NameValueCollection postCollection) at
System.Web.UI.Page.ProcessPostData(NameValueCollection postData, Boolean fBeforeLoad) at
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) --- End of inner exception stack trace --- at
System.Web.UI.Page.HandleError(Exception e) at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) at
System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) at System.Web.UI.Page.ProcessRequest() at
System.Web.UI.Page.ProcessRequest(HttpContext context) at
ASP.forms_news_detail_aspx.ProcessRequest(HttpContext context) at
System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() at
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
HELP !!!