【问题标题】:method is called 2 or 3 times in each request .NET MVC方法在每个请求.NET MVC 中被调用 2 或 3 次
【发布时间】:2017-06-16 17:01:41
【问题描述】:

我正在使用 ASP.NET MVC 的项目中遇到问题。

场景如下:
- 我有一个登录页面(用户名和密码)。
- 每当我导航到 localhost:5588/login 时,以下操作方法将被调用 2 或 3 次(我在此方法中使用断点来捕获调用)。

public ActionResult Login()
{
     return View();
}

问题是,为什么每次进入登录页面都会调用这个方法2-3次?

P.S #1:不仅登录页面被调用 2-3 次,每个 Action 方法也有相同的问题。
P.S:#2:我正在使用以下路线:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        defaults: new { controller = "Login", action = "Login", id = UrlParameter.Optional }
        );       
}

更新:
此问题仅在 Google Chrome 上发生!

【问题讨论】:

  • 如果您使用的是默认路由,那么localhost:5588/login 将永远不会使用该方法(它会转到LoginControllerIndex() 方法)
  • @MohammadAlqerm LoginView 在做什么?可以发一下代码吗?
  • @peval27:登录视图仅包含用户名和密码,以及验证码区域。但问题不仅在 Login 操作方法中,这种行为发生在整个项目中的每个操作方法调用中。

标签: c# asp.net asp.net-mvc asp.net-mvc-5


【解决方案1】:

显然有些东西会调用您的操作方法 3 次,强烈建议打开 chrome 开发人员工具,导航到网络并检查流量,如果它们是 XHR 请求,您还可以跟踪它们的来源,否则就是在黑暗中拍摄.

【讨论】:

  • 不仅登录页面被调用了2-3次,每个Action方法也有同样的问题。
【解决方案2】:

可能会出现问题,因为浏览器可以在您按 Enter 之前预加载页面。 在这个帖子发布的解决方案中,您如何理解它是预加载请求:HTTP header to detect a preload request by Google Chrome

【讨论】:

    【解决方案3】:

    我曾经遇到过这个问题,发现我有这样的事情

    src="#"
    

    在我的图像标签中或检查任何其他可能会意外引用页面的标记,例如脚本引用、图像引用、css 引用等

    【讨论】:

      【解决方案4】:

      这是正确的答案,这实际上解决了问题。 [特别感谢我的朋友 Mohammad Aldayem 的伟大发现]。

      根据 Chromium 问题跟踪器 (https://bugs.chromium.org) 上发布的问题,该问题位于 _Layout.cshtml 页面的“favicon.ico”中。因为对于没有网站图标的页面上的每个请求,Chrome 都会请求网站图标。

      以下是使用 Google Chrome 时此问题的链接:

      链接 #1:https://bugs.chromium.org/p/chromium/issues/detail?id=64810
      链接#2:https://bugs.chromium.org/p/chromium/issues/detail?id=39402

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-01-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-28
        • 1970-01-01
        • 1970-01-01
        • 2011-09-15
        相关资源
        最近更新 更多