异常过滤器在asp.net-core 1.1中返回一个空主体

时间:2016-11-30 15:48:20

标签: asp.net-core asp.net-core-mvc

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

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

将我的Web应用程序迁移到asp.net核心1.1后,结果是一个空白页面:响应的主体为空,Content-Length为零。这是客户收到的回复

ImageView myImage = (ImageView) findViewById(R.id.imgView);

有没有人遇到类似的问题,为什么? 感谢任何评论

1 个答案:

答案 0 :(得分:1)

行为由github aspnet / mvc团队确认。 https://github.com/aspnet/Mvc/issues/5594#issuecomment-265866653

目前,唯一的解决方案是直接呈现HTML响应。在这种情况下,标记ExceptionHandled = true按预期工作。

    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);
    }