【问题标题】:MVC GET Action takes 0.1 second, the same POST Action takes 30 secondsMVC GET Action 需要 0.1 秒,相同的 POST Action 需要 30 秒
【发布时间】:2013-08-08 18:10:01
【问题描述】:

鉴于 ASP.NET MVC 控制器中的两个操作返回相同的内容,但一个处理 GET 请求,一个处理 POST 请求。 GET 操作总是在 0.1 秒内返回,而 POST 操作总是在 30 秒内返回。该操作本身完成得非常快,但由于某种原因,浏览器(IE 和 Chrome)在 Network Profiler 中显示为等待 30 秒 - 可能导致延迟的原因是什么?有什么办法可以调试吗?

    [HttpGet]
    public ActionResult MyAction()
    {
        return View("MyView");
    }

    [HttpPost]
    public ActionResult MyAction(object obj)
    {
        return View("MyView");
    }

每个网络配置文件:

http://MyDevServer.com:8080/MyController/MyAction 方法:获取 状态:200 OK 时间:0.194 秒

http://MyDevServer.com:8080/MyController/MyAction 方法:POST 状态:200 OK 时间:30.39 秒

【问题讨论】:

  • 这是否托管在 IIS 中?
  • 如果您在您的操作方法的 POST 版本中设置断点,请求是否需要一段时间才能到达操作方法,或者它是否快速到达那里但需要一段时间才能返回客户端?
  • 您应该在 db.connection 上的代码中查找问题(在 ActionResult 中向我们展示您的真实代码)。
  • 同意。这两个操作之间应该没有区别,因此您的真实代码中一定有某些东西导致了问题。
  • 1.在我的开发服务器上,2。它非常快地到达并跳过返回方法,然后需要很长时间才能返回到客户端。 3. 这是真正的代码 - 只是更改了变量名称,我同意应该没有区别 - 这是一个带有 Razor 和 ASP 视图引擎的站点,我试图添加的框架是 DevExpress,这些操作是针对其中一个控件的。如何分析 Action 返回和浏览器接收之间发生的情况?感谢您的帮助

标签: asp.net-mvc http-post asp.net-mvc-routing http-get


【解决方案1】:

需要调查的几件事:

  1. 您是否有一段代码挂接到堆栈并延迟执行、视图引擎、过滤器或提供程序?您可以通过使用像 EQATEC Profiler 这样的分析器来发现这一点(该死的,它已被 Telerik 接管,但在年底之前它仍然是免费的)。

    1a。您是否让 MVC 以标准方式找到您的视图?您是否以任何方式添加到 ViewLocations?

  2. 您的服务器上发生了什么?在 POST 移动时,您是否看到任何性能峰值以指示发生了不愉快的事情?

  3. 删除对象参数后会发生什么?有什么变化吗?

  4. 你说这代码。你在这个项目中使用实体框架吗? This 有时会根据设置显着提高性能。

  5. 在 IIS 中描述您的应用程序池。模式?其他设置?

【讨论】:

  • 我已经部署在 IIS 中,没有问题,所以问题只在我的开发服务器上。我发现了这个stackoverflow.com/questions/12606898/…,它建议了 Content-Length,但我已经检查过了,这是正确发送的
猜你喜欢
  • 2015-02-10
  • 2023-02-06
  • 2012-02-01
  • 1970-01-01
  • 2018-03-31
  • 2023-02-16
  • 1970-01-01
  • 2016-07-30
  • 2010-12-17
相关资源
最近更新 更多