【问题标题】:Getting ERR_CONNECTION_RESET from IIS with no information in logs从 IIS 获取 ERR_CONNECTION_RESET 而日志中没有信息
【发布时间】:2017-01-23 00:02:44
【问题描述】:

当我的 ASP.NET 服务器尝试回复错误时,我在 Chrome 中收到 ERR_CONNECTION_RESET

通常我可以通过查看日志文件找到有关服务器错误的信息,但那里什么也没有。

在响应上运行调试器似乎显示一切正常,除了最后,Chrome 告诉我连接已重置。

这是处理异常处理的代码:

    try
    {
       ...
    }
    catch (ArgumentException e)
    {
        Response.StatusCode = 400;
        Response.StatusDescription = e.Message;
        return new ContentResult {Content = "" };
    }

Chrome 在控制台中显示net::ERR_CONNECTION_RESET

使用 Fiddler,我收到错误消息 [Fiddler] ReadResponse() failed: The server did not return a complete response for this request. Server returned 0 bytes.

如果我在IIS中Enable Failed Request Tracing,并打开生成的xml文件

    GENERAL_FLUSH_RESPONSE_END 


    BytesSent
    0 

    ErrorCode
    The parameter is incorrect.
     (0x80070057) 

我花了几个小时试图调试它,但运气不佳。

【问题讨论】:

    标签: c# asp.net google-chrome iis-10


    【解决方案1】:

    在使用本地主机上的一些虚拟域并分配 SSL 证书后,我遇到了这个问题。为当前域选择 IIS 开发证书,错误消失了。

    【讨论】:

    • 由于某种原因,我也遇到了同样的错误,无法弄清楚问题所在。手动删除 https 绑定并重新创建后,一切又开始工作了......
    • 非常感谢您为我们节省了时间!确实是在创建新站点时未设置绑定证书。
    • 并非所有英雄都穿着斗篷。谢谢。
    【解决方案2】:

    原来这是由这一行引起的:

     Response.StatusDescription = e.Message;
    

    当 e.Message 内部有换行符 (\r\n) 序列时。

    我可用于修复此错误的两个选项是:

    1. 将该行替换为:

     Response.StatusDescription = e.Message.Replace("\r\n"," ");
    

    2. 将 catch 块替换为

        catch (ArgumentException e)
        {
            Response.StatusCode = 400;
            return new ContentResult {Content = e.Message };
        }
    

    【讨论】:

    • 遇到了同样的问题。太感谢了。在这个问题上,我用头撞墙了大约 2 天。
    猜你喜欢
    • 2018-06-25
    • 2010-10-11
    • 1970-01-01
    • 1970-01-01
    • 2016-03-19
    • 2018-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多