使用ASP.NET MVC和IIS时,我遇到了以下神秘问题。我有一个非常简单的控制器:
public class SimpleController : Controller
{
public ActionResult Huge()
{
return Content(new string('a', 3000000));
}
public ActionResult Small()
{
return Content(new string('a', 1000000));
}
}
[如果我使用IIS Express运行此示例,或者使用普通IIS运行更复杂的示例,则比我有时遇到的问题要多,对/Huge
方法处理程序的请求将挂起:在浏览器中,看起来就像无限页面加载,在Wireshark中,我看到打开了TCP连接,但此后,服务器没有任何活动(我也尝试通过requests
lib通过python发出原始请求,在这种情况下,它也因/Huge
方法处理程序而挂起)。另一方面,对/Small
方法处理程序的请求也可以正常工作。
我发现,这种行为可以用相对少量的可用RAM稳定地重现。但这对我来说很奇怪:Process Explorer显示至少有8GB的可用内存(只有不到8GB的可用空间可用,但两个控制器都可以正常工作的情况下,仍会出现问题)
我也尝试使用ASP NET Core和Kestrel服务器重现此行为,并且使用此设置,一切正常,没有挂起。
有人能阐明这个神秘的问题吗?问题的原因是什么,有什么解决方法?
我的配置如下: