我 Build
protected void Application_Error(object sender, EventArgs e)
{
if (Context.Handler is IRequiresSessionState || Context.Handler is IReadOnlySessionState)
{
try
{
var httpContext = HttpContext.Current;
Exception exception = httpContext.Server.GetLastError();
if (exception is HttpRequestValidationException)
{
httpContext.Response.Clear();
var logLoggerService = new LogLoggerService();
logLoggerService.Error("ValidationException", exception);
WriteErrorResponse(exception.Message);
}
else
{
httpContext.Response.Clear();
var logLoggerService = new LogLoggerService();
logLoggerService.Error(exception);
WriteErrorResponse(exception.Message);
}
}
catch
{
var httpContext = HttpContext.Current;
httpContext.Response.Clear();
}
}
}
我发现在服务器上发生错误时,此函数不会被调用 . 但是当我处于调试模式时,会调用 Application_Error
.
为什么这不适用于服务器? IIS或服务器上的.NET 4.0可能有问题吗?
在服务器上我有:
事件代码:3005事件消息:发生了未处理的异常 . 活动时间:15-8-2011 8:25:26活动时间(UTC):15-8-2011 6:25:26活动编号:ae3cad590adc43c3803410023cccb6b0活动顺序:4活动开始:1活动详情代码:0
应用信息:应用领域:/ LM / W3SVC / 11 / ROOT-1-129578631124796958信任级别:完整应用虚拟路径:/应用路径:C:\ inetpub \ wwwroot \ TestnaAplikacijaZaLog \机器名称:SRJ1-SRV-01
进程信息:进程ID:6644进程名称:w3wp.exe帐户名:IIS APPPOOL \ TestnaAplikacijaZaLog
异常信息:异常类型:HttpException异常消息:响应在此上下文中不可用 . 在System.Web.HttpApplication.InitSpecial(HttpApplicationState状态,MethodInfo [])的System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext,HttpContext context,MethodInfo []处理程序)的System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context,HttpApplication app)处 . System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext)的System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext,HttpContext context)处理程序,IntPtr appContext,HttpContext context)
在这种情况下无法获得响应 . 在System.Web.HttpContext.get_Response()at LogiranjeGresaka.MvcApplication.Application_Start()in c:\ users \ esmira \ documents \ visual studio 2010 \ Projects \ LogiranjeGresaka \ LogiranjeGresaka \ Global.asax.cs:第46行
请求信息:请求URL:http://192.168.0.100:2227/Home/Index请求路径:/ Home / Index用户主机地址:192.168.0.103用户:
经过身份验证:错误身份验证类型:
线程帐户名称:IIS APPPOOL \ TestnaAplikacijaZaLog
线程信息:线程ID:7线程帐户名称:IIS APPPOOL \ TestnaAplikacijaZaLog模拟:False堆栈跟踪:System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext,HttpContext)上的System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext上下文,HttpApplication应用程序) System.Web上的System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext,HttpContext context)中的System.Web.HttpApplication.InitSpecial(HttpApplicationState状态,MethodInfo []处理程序,IntPtr appContext,HttpContext上下文)中的context,MethodInfo []处理程序 . Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext)
自订活动详情:
3 回答
我解决了添加问题
这是被调用的,但错误是由上面的代码引发的,如错误消息所详述:
您正在尝试使用Response,但您不能 .
就在这里,它告诉你问题所在的行号:
在这种情况下无法获得响应 . 在System.Web.HttpContext.get_Response()at LogiranjeGresaka.MvcApplication.Application_Start()in c:\ users \ esmira \ documents \ visual studio 2010 \ Projects \ LogiranjeGresaka \ LogiranjeGresaka \ Global.asax.cs: line 46
第46行Global.asax