我在经典代码之后的global.asax中编写了这段代码。每次我启动网站时都会显示此错误。刷新页面后,它会转到正确的页面。我不明白为什么。
此处不提供回复 上下文。描述:未处理 期间发生了异常 执行当前的Web请求。 请查看堆栈跟踪了解更多信息 有关错误的信息和位置 它起源于代码。
异常详细信息: System.Web.HttpException:响应是 在这种情况下不可用。
来源错误:
Line 26: catch (Exception ex) Line 27: { Line 28: Response.Write(ex.ToString()); Line 29: } Line 30:
< script runat =“server”>
void Application_Start(object sender, EventArgs e)
{
try
{
if (Roles.RoleExists("Administrators") == false)
Roles.CreateRole("Administrators");
if (Membership.FindUsersByName("ken").Count == 0)
{
Membership.CreateUser("ken", "123", "ken@jobpost.com");
Roles.AddUserToRole("ken", "Administrators");
}
if (Membership.FindUsersByName("dan").Count == 0)
Membership.CreateUser("dan", "123", "dan@jobpost.com");
}
catch (Exception ex)
{
Response.Write(ex.ToString());
}
}
< /脚本>
答案 0 :(得分:2)
Application_Start仅在IIS启动应用程序时执行一次。问题的实际原因在于try块内部的代码,您可以使用日志框架或在catch块中设置断点来诊断它。
您不能在catch块中使用Response.Write,因为没有与Application_Start关联的Request(或Response)。这样做会触发一个新的异常,它会隐藏问题的原因。有关详细信息,请查看ASP.NET Application Lifecycle。
答案 1 :(得分:0)
我相信很可能你的应用启动代码中存在一些问题会导致异常,导致你遇到阻塞。由于某种原因,响应对象不可用,因此您得到一个未处理的异常。由于应用程序已经启动,因此不会再次访问代码路径,并且您在后续请求中看不到错误。
我建议您将异常记录在一个文件中,而不是发送它以响应检查原始异常详细信息,这些详细信息将掩盖实际问题以及为什么响应不可用。您可以使用System.Diagnostic.Trace和跟踪侦听器进行日志记录(或者您可以使用诸如Log4Net或MS Logging App Block之类的库)