当RAM相对较低时,ASP.NET MVC请求挂起

问题描述 投票:1回答:1

使用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服务器重现此行为,并且使用此设置,一切正常,没有挂起。

有人能阐明这个神秘的问题吗?问题的原因是什么,有什么解决方法?

我的配置如下:

  • 。NET Framework 4.8
  • Windows 10 Pro(版本1909)
  • RAM:32 GB(启用了固定大小的交换-24 GB)
c# iis hang
1个回答
0
投票

我唯一能想到的是,您可能会遇到默认的maxRequestLength

我不确定这是否有帮助,但您可以尝试

maxRequestLength
© www.soinside.com 2019 - 2024. All rights reserved.