我有一个在 IIS 7.0 上托管的混合 WebForms/MVC Web Api 应用程序。它有两个主要页面——Default.aspx 和 Main.aspx。其余的都是通过 WEB api 调用/JSON/javascript 完成的。它在我的本地机器上运行良好,但是当我们在服务器上发布它时遇到了一些问题。
看起来它随机忽略了与服务器的连接。有时它工作正常,但有时永远不会加载,最终浏览器会显示网络连接错误。在这些“盲目”的时间段内,托管应用程序的工作过程不会做任何事情——就像它没有从 IIS/客户端接收任何输入一样。在接下来的 10 分钟内,它将再次正常工作。虽然我在这里看不到任何模式,但当我使用直接链接到页面时,它似乎更稳定:http://webserver/AppX/Default.aspx
或http://webserver/AppX/Main.aspx
在同一个 IIS 服务器上,另一个应用程序是 webforms 应用程序工作得很好。它们位于不同的应用程序池中——唯一的区别是第二个应用程序以经典模式托管,而第一个应用程序以集成模式托管。将其切换到经典模式无济于事。我怀疑这与路由和应用程序的混合性质有关。
我研究了我在 stackoverflow 上找到的几个类似案例,并且已经尝试了以下案例:
- 切换应用程序池以启用 32 位应用程序。我为任何平台编译所有内容,因此它也可以在 64 位模式下工作(当它工作时)。没有帮助。
我告诉路由器忽略任何 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 } );
如果请求绕过上述忽略之一,则会有一个默认控制器将其重定向回 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;
}
}
- 以防万一我在 web.config 中将最大连接数增加到 500
上面提到的没有任何帮助。任何想法,我还能尝试什么?谢谢。