【发布时间】:2013-06-25 13:57:04
【问题描述】:
我在 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
上述没有任何帮助。任何想法,我还能尝试什么?谢谢。
【问题讨论】:
-
这个问题已经解决了吗?
标签: asp.net-mvc iis configuration webforms asp.net-web-api