我正在使用Visual Studio 2005和.NET 2.0在Visual Basic中编写Web应用程序。我的代码(Default.aspx.vb)看起来像这样。使用从代码隐藏字典导致vb.net中的关键错误
Partial Public Class frmDefault
Inherits System.Web.UI.Page
Protected PageData As New Dictionary(Of String, String)
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
PageData("text") = "Hello World!"
End Sub
End Class
Default.aspx中,我有
<%=PageData("text")%>
当直播服务器(这将获得每天约40独特的命中)上说,这将导致偶发性“给定的关键是不目前在字典中。“用下面的堆栈跟踪错误:
at System.ThrowHelper.ThrowKeyNotFoundException()
at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
at ASP.default_aspx.__RenderContent2(HtmlTextWriter __w, Control parameterContainer)
at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children)
at System.Web.UI.Control.RenderChildren(HtmlTextWriter writer)
at System.Web.UI.Control.Render(HtmlTextWriter writer)
at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter)
at System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter)
at System.Web.UI.Control.RenderControl(HtmlTextWriter writer)
at ASP.forms_glass_master.__Render__control1(HtmlTextWriter __w, Control parameterContainer)
at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children)
at System.Web.UI.Control.RenderChildren(HtmlTextWriter writer)
at System.Web.UI.Control.Render(HtmlTextWriter writer)
at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter)
at System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter)
at System.Web.UI.Control.RenderControl(HtmlTextWriter writer)
at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children)
at System.Web.UI.Control.RenderChildren(HtmlTextWriter writer)
at System.Web.UI.Page.Render(HtmlTextWriter writer)
at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter)
at System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter)
at System.Web.UI.Control.RenderControl(HtmlTextWriter writer)
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
我在日志中看到这些每天1-2次,但同时调试,测试,或使用实时应用程序就得到了错误我自己。
为了日志的详细信息,我试图把这个表单类抓住关键错误:
Protected Function GetPageData(ByRef Key As String) As String
Try
Return PageData(Key)
Catch Ex As Exception
'Log the exception
End Try
End Function
,并使用该Default.aspx中:
<%=GetPageData("text")%>
于是乎我发布了这个改变(一个多月前),我没有记录一个关键的异常。
(1)什么会导致原来的代码生成密钥异常?
(2)为什么更新的代码不会产生类似的键异常?
我会在返回前的新行上分割出PageData(key)。返回语句可能会以某种方式混淆你的错误记录。 –