2011-11-06 86 views
0

当我开始我的应用程序,我得到这个错误:服务器对象为空?

System.NullReferenceException was unhandled by user code 
Message=Objektreferensen har inte angetts till en instans av ett objekt. 
Source=App_global.asax.avoeinwy 
StackTrace: 
vid ASP.global_asax.BuildMessage() i E:\WEBB\Adilimo\Papp\Web\papplimited_com\global.asax:rad 400 
vid ASP.global_asax.Application_Error(Object sender, EventArgs e) i E:\WEBB\Adilimo\Papp\Web\papplimited_com\global.asax:rad 46 
vid System.EventHandler.Invoke(Object sender, EventArgs e) 
vid System.Web.HttpApplication.RaiseOnError() 
InnerException: 

这是它发生在哪里:

 Dim strMessage As New StringBuilder 
....... (lots of "strMessage.Append()") 
     strMessage.Append("<tr>") 
     strMessage.Append("<td width=""100"" align=""right"" bgcolor=""#EEEEEE"" class=""header1"" nowrap valign=""top"">Details</td>") 
strMessage.Append("<td bgcolor=""#FFFFFF"" class=""basix"">" & Server.GetLastError.InnerException.ToString() & "</td>") 
     strMessage.Append("</tr>") 

这里是堆栈跟踪:

vid ASP.global_asax.BuildMessage() i E:\WEBB\Adilimo\Papp\Web\papplimited_com\global.asax:rad 400 
    vid ASP.global_asax.Application_Error(Object sender, EventArgs e) i E:\WEBB\Adilimo\Papp\Web\papplimited_com\global.asax:rad 46 
    vid System.EventHandler.Invoke(Object sender, EventArgs e) 
    vid System.Web.HttpApplication.RaiseOnError() 

有什么建议吗?当我看到服务器对象为空时,我真的不知道该怎么做。 :(

此处给出了一个我在哪里的服务器对象显然是不空行得到一个NullReference的图像!

enter image description here

+0

你为什么要检查启动时的最后一个错误? –

+1

您是否尝试使用BuildMessage()方法的开始处的断点进行调试,以及哪个对象为空? – Damith

+0

@MitchWheat我不是,这段代码给了我。我不知道原因。 – Lautaro

回答

1

更好地检查空访问LastError的的InnerException之前。

strMessage.Append("<td bgcolor=""#FFFFFF"" class=""basix"">" & Server.GetLastError== null? String.Empty: Server.GetLastError.InnerException.ToString() & "</td>") 

您可能没有对BuildMessage()方法进行异常处理。put try catch块并记录异常,它可以帮助您找到确切的原因,而不必考虑发生了什么。

If server.GetLastError IsNot Nothing AndAlso Server.GetLastError.InnerException IsNot Nothing Then 
    errormsg = Server.GetLastError.InnerException.ToString() 
End If 
+0

它仍然不是一个好办法,但是这将解决OP问题,所以+1 – Basic

+0

因此,我应该登录以获取更多信息,然后在调试时获得更多信息? – Lautaro

+0

日志不仅用于调试时间。可能正在生产中,我们需要检查究竟是什么问题。没有错误信息,它将很难找到确切的问题。记录错误,这些信息将帮助您找到解决方案。在这里你可以记录'error.ToString()'你发现异常。 – Damith