gpt4 book ai didi

asp.net-mvc - 扩展HandleError属性-状态码112031(连接重置)

转载 作者:行者123 更新时间:2023-12-03 09:01:18 25 4
gpt4 key购买 nike

我创建了一个新类,该类继承自HandleErrorAttribute以不同方式处理ajax请求。唯一的重写是在OnException方法上:

    public override void OnException(ExceptionContext filterContext)
{
if (filterContext.RequestContext.HttpContext.Request.IsAjaxRequest())
{
filterContext.ExceptionHandled = true;
filterContext.HttpContext.Response.Clear();
filterContext.HttpContext.Response.StatusCode = 500;
filterContext.HttpContext.Response.TrySkipIisCustomErrors = true;
filterContext.Result = new JsonResult { Data = errorText };
return;
}
base.OnException(filterContext);
}

这确实有效,大约一半的时间。当它起作用时,响应中的状态代码为500,并提供错误消息。否则,状态代码为12031,错误消息为空。

状态码12031显然是指:

ERROR_INTERNET_CONNECTION_RESET
与服务器的连接已重置。

不知道为什么会这样。

最佳答案

我不确定这到底是怎么回事,但是我可以做出有根据的猜测。我们执行非常相似的操作,除了首先调用base.OnException,然后测试filterContext.ExceptionHandled以查看基本过滤器是否处理了异常。这一直对我们有用,与您所做的不同。请注意,基本过滤器将不会始终处理异常(有关详细信息,请参见源代码)。

请注意,基本过滤器会执行过滤器不会执行的操作,例如测试IsCustomErrorEnabled和异常的特定类型。有一些异常不应该处理;再次,请参阅MVC源代码以获取详细信息。

因此,我的疯狂猜测是,在某些情况下,您的过滤器(总是在有AJAX请求时处理异常)和基本过滤器会做不同的事情。我建议您尝试使用我们使用的方法(首先调用基,仅在请求是AJAX请求且基表明已处理异常的情况下,才执行自定义AJAX处理),然后看是否还没有结束为您做得更好。

关于asp.net-mvc - 扩展HandleError属性-状态码112031(连接重置),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1477760/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com