0

我有一个在 IIS 7.0 上托管的混合 WebForms/MVC Web Api 应用程序。它有两个主要页面——Default.aspx 和 Main.aspx。其余的都是通过 WEB api 调用/JSON/javascript 完成的。它在我的本地机器上运行良好,但是当我们在服务器上发布它时遇到了一些问题。

看起来它随机忽略了与服务器的连接。有时它工作正常,但有时永远不会加载,最终浏览器会显示网络连接错误。在这些“盲目”的时间段内,托管应用程序的工作过程不会做任何事情——就像它没有从 IIS/客户端接收任何输入一样。在接下来的 10 分钟内,它将再次正常工作。虽然我在这里看不到任何模式,但当我使用直接链接到页面时,它似乎更稳定:http://webserver/AppX/Default.aspxhttp://webserver/AppX/Main.aspx

在同一个 IIS 服务器上,另一个应用程序是 webforms 应用程序工作得很好。它们位于不同的应用程序池中——唯一的区别是第二个应用程序以经典模式托管,而第一个应用程序以集成模式托管。将其切换到经典模式无济于事。我怀疑这与路由和应用程序的混合性质有关。

我研究了我在 stackoverflow 上找到的几个类似案例,并且已经尝试了以下案例:

  1. 切换应用程序池以启用 32 位应用程序。我为任何平台编译所有内容,因此它也可以在 64 位模式下工作(当它工作时)。没有帮助。
  2. 我告诉路由器忽略任何 aspx 页面:

        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        routes.IgnoreRoute("{resource}.aspx/{*pathInfo}");
        routes.IgnoreRoute("{resource}.ashx/{*pathInfo}");
        routes.IgnoreRoute("");
        routes.IgnoreRoute("Images/favicon.ico");
    
        var route = routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
    
  3. 如果请求绕过上述忽略之一,则会有一个默认控制器将其重定向回 Default.aspx:

public class HomeController : ApiController { public HttpResponseMessage Index() { var response = Request.CreateResponse(HttpStatusCode.Unused); response.Headers.Location = new Uri("Default.aspx", UriKind.Relative); return response; } }

  1. 以防万一我在 web.config 中将最大连接数增加到 500

上面提到的没有任何帮助。任何想法,我还能尝试什么?谢谢。

4

1 回答 1

0

我建议在您的 IIS 服务器上打开失败的请求跟踪。

http://www.iis.net/learn/troubleshoot/using-failed-request-tracing/troubleshooting-failed-requests-using-tracing-in-iis

此外,请检查服务器上的 IIS 日志和 HTTPError 日志,以获取有关可能出错的提示。

于 2013-07-17T18:52:56.250 回答