首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >asp.net-core 1.1中返回空体的异常筛选器

asp.net-core 1.1中返回空体的异常筛选器
EN

Stack Overflow用户
提问于 2016-11-30 23:48:20
回答 1查看 972关注 0票数 2

下面的异常筛选器将异常重定向到我的特定错误页面。

代码语言:javascript
复制
    [AttributeUsage(AttributeTargets.Method | AttributeTargets.Class, AllowMultiple = false)]
public class FrontofficeControllerExceptionFilterAttribute : ExceptionFilterAttribute
{
    protected readonly ILogger<FrontofficeController> _logger;
    protected readonly IHostingEnvironment _hostingEnvironment;
    protected readonly IModelMetadataProvider _modelMetadataProvider;

    public FrontofficeControllerExceptionFilterAttribute(ILogger<FrontofficeController> logger, IHostingEnvironment hostingEnvironment, IModelMetadataProvider modelMetadataProvider)
    {
        _logger = logger;
        _hostingEnvironment = hostingEnvironment;
        _modelMetadataProvider = modelMetadataProvider;
    }

    public override void OnException(ExceptionContext context)
    {
        if (context.ExceptionHandled) return;

        Exception ex = context.Exception;
        var result = new ViewResult { ViewName = "ApplicationError" };

        context.ExceptionHandled = true; // mark exception as handled
        context.Result = result;
    }
}

将我的web应用程序迁移到asp.net Core1.1后,结果是一个空白页面:响应的正文为空,Content-Length为零。这是在客户端上收到的响应

代码语言:javascript
复制
HTTP/1.1 200 OK
Server: Kestrel
X-SourceFiles: =?UTF-8?B?QzpcUHJvamVjdHNcaW50ZXJhaC52aXN1YWxzdHVkaW8uY29tXEludmVudGFyaW9cTWFpblxTb3VyY2VcRnJvbnRvZmZpY2Vcc3JjXEZyb250b2ZmaWNl?=
X-Powered-By: ASP.NET
Date: Wed, 30 Nov 2016 14:49:53 GMT
Content-Length: 0

有没有人遇到过类似的问题?为什么?感谢您的评论

EN

回答 1

Stack Overflow用户

发布于 2016-12-14 20:29:33

该行为得到了github aspnet/mvc团队的确认。https://github.com/aspnet/Mvc/issues/5594#issuecomment-265866653

目前,唯一的解决方案是直接呈现HTML响应。在这种情况下,将ExceptionHandled = true标记为true的效果与预期一致。

代码语言:javascript
复制
    public override void OnException(ExceptionContext context)
    {
        context.ExceptionHandled = true; // mark exception as handled
        context.HttpContext.Response.Clear();
        context.HttpContext.Response.StatusCode = 400;
        context.HttpContext.Response.ContentType = new MediaTypeHeaderValue("text/html").ToString();
        var home = string.Format("{0}://{1}", context.HttpContext.Request.Scheme,context.HttpContext.Request.Host);
        var htmlString ="<h2>SI E' VERIFICATO UN ERRORE INATTESO</h><br/><br/>";
        context.HttpContext.Response.WriteAsync(htmlString, Encoding.UTF8);
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40892538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档