我正在开发一个ASP.NET MVC应用程序,当我从VS运行它时,如果我让浏览器在页面上停留很短的时间,如45秒,然后尝试采取一些行动,请求永远不会到我的控制器。如果我在做出导航/请求之前完全没有等待,那么一切都按预期运行。这个问题在项目的整个生命周期中都存在。
发生这种情况时,IIS Express日志不会显示任何请求;但是,在调试模式下,VS可以看到浏览器确实发出了请求。尽管ActionResult内部没有断点,但我知道它没有被调用。浏览器的调试工具会永久显示处于挂起状态的请求。该网站仍然在运行,IIS并没有崩溃。我可以打开另一个浏览器并访问登录页面,但是,POST不会触发控制器操作。
这种情况发生在每台机器和每个浏览器上。我已经浏览过网络,无法找到解决我问题的其他人。我的webconfig和applicationHosts看起来像默认生成的,除了一些表单auth设置。
<appSettings>
<add key="webpages:Version" value="3.0.0.0" />
<add key="webpages:Enabled" value="false" />
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
<add key="PreserveLoginUrl" value="true" />
</appSettings>
<system.web>
<compilation debug="true" targetFramework="4.6.1" />
<httpRuntime targetFramework="4.6.1" requestValidationMode="2.0" />
<authentication mode="Forms">
<forms slidingExpiration="true" timeout="60" loginUrl="~/Account/LogIn" />
</authentication>
答案 0 :(得分:0)
原来问题是一个加载程序锁是由一个正在死亡(终止?)的线程发出的,然后才能释放锁。此锁定将阻止处理HTTP请求的任何线程。 Application Insights出现在有问题的线程的callstack中,并且在禁用它之后,问题不再出现。