MVC5申请表会在提交

时间:2016-06-20 19:30:02

标签: c# asp.net-mvc iis-7.5 windows-server-2008

我们有一个MVC5 / Razor应用程序,上周突然开始表现得非常奇怪。它托管在Windows Server 2008 R2(使用IIS 7.5)上,上周安装Windows更新后问题就出现了。直到那时应用程序运行正常。

问题是当用户提交一个由10个文本字段,4个文本区域和一个下拉列表组成的简单表单时,服务器没有正确响应,导致“Error_Connection_Reset”(在Chrome中)/“页面不可用“(在IE11中)。

我们在控制器的接收操作中使用带有RedirectToAction的POST-Redirect-GET模式,这通常会导致302响应和重定向。

表单呈现如下:

@using (Html.BeginForm("Create", "Controller"))
{
    @Html.AntiForgeryToken()
    <div class="editor-fields">
        @Html.EditorFor(m => m.Model)
    </div>

    <div class="clear-fix"></div>
    <div class="submit-area">
        <input type="submit" value="Submit" />
    </div>
}

该操作具有以下属性:

  • [HttpPost]
  • [ValidateAntiForgeryToken]
  • [AllowAnonymous]
  • [ValidateInput(false)]

我们还使用Google Analytics和jQuery,jQuery验证,不引人注目的ajax与优化(缩小)。大多数JS脚本都包含在Scripts.Render中。

当我们从我们自己的域内访问它时,应用程序工作正常,但由于我们所有的用户都需要从外部访问,我们需要修复此错误。这可能表明存在DNS问题,但我们的IT支持人员表示DNS看起来很好并且最近没有更改过。

到目前为止,我们已经完成了这项工作:

  • inetpub\logs\LogFiles中的日志文件显示多个(3到10个)POST请求,所有POST请求均为状态码302,但没有后续的GET请求。确实应该只有一个POST请求,然后是GET请求!
  • 只要网站达到空闲超时值(默认为20分钟),%windir%\System32\LogFiles\HTTPERR中的日志文件就不会显示任何有趣的内容,只会出现一堆Timer_ConnectionIdle“错误。”
  • 使用Chrome和IE11中的Fiddler和dev工具检查了请求,并且所有请求都显示相同的请求标头。有了提琴手,我们得到[Fiddler] ReadResponse() failed: The server did not return a complete response for this request. Server returned 0 bytes。在Chrome开发者工具中,它在状态列中显示(failed)
  • 在IIS中禁用缓存和压缩。
  • 在web.config文件中关闭了CustomErrors
  • 在web.config
  • 中添加了<modules runAllManagedModulesForAllRequests="true">
  • 搜索谷歌和SO的答案,但到目前为止无济于事
  • 检查了最近安装的Windows Update有关.NET 4.5.2和相关知识库文章的更新,但没有提到与此问题有关的任何内容
  • 修改另外,我们启用了失败的请求跟踪,但我们只收到了inetpub\logs\FailedReqLogFiles文件夹中缺少的favicon.ico的失败请求日志

有趣的是,如果我在Chrome开发工具中的“禁用缓存”中添加复选标记,该应用程序也可以正常工作。这可能表明这是一个缓存问题,这也是我们尝试在IIS中启用输出缓存的原因。

我们的下一步是启动新服务器(Windows 2012和更新版本的IIS)并在那里安装应用程序在我们当前的服务器上安装WireShark以进一步调查请求。但是,如果有人经历过这种行为并且知道修复它,我们宁愿现在就修复它。所以,如果有人可以提供帮助,请提供建议。

1 个答案:

答案 0 :(得分:0)

由于问题似乎只发生在我们域外的用户身上,我们开始认为此问题可能与我们的防火墙有关,因此我们联系了我们的防火墙提供商,他们确认最新版本的防火墙软件存在问题。事实上,防火墙软件在我们的服务器上安装Windows更新的同一天更新,这可能会造成一些混乱。恢复到以前版本的防火墙软件后,问题已经消失,一切都按预期再次运行。呼!