web服务器上的system.web.routing无法正常工作

时间:2009-05-23 00:20:59

标签: asp.net asp.net-routing

我已经阅读了有关如何使system.web.routing工作的所有这些文章,但所有这些文章都解释了localhost:port。我可以在本地计算机上运行,​​但是只要我在服务器上上传网站,无论我做什么,路由都会停止工作。

首先我尝试没有任何扩展名(.aspx),但经过所有努力后,我放弃了并添加了扩展程序,但仍然无法在服务器上运行。

感谢任何帮助。

样品:

<{1}} 中的

global.ascx
路由处理程序

中的

Route test = new Route("home.aspx", new TestRoutingHandler());
Routes.Add(test); 

在httpModules

下的web.config中
public IHttpHandler GetHttpHandler(RequestContext requestContext)
{
    string virtualPath = string.Empty;
    Route route = (Route)requestContext.RouteData.Route;
    virtualPath = "~/Default.aspx";
    return (Page)BuildManager.CreateInstanceFromVirtualPath(virtualPath, typeof(Page));
}

这很简单,适用于本地计算机,但不适用于Web服务器。

2 个答案:

答案 0 :(得分:2)

对于IIS7 +我发现添加到web.config的部分突然使一切正常:

<modules runAllManagedModulesForAllRequests="true" />

在Cassini Web服务器上运行VS时感到困惑,它运行得很好。

答案 1 :(得分:0)

验证Web服务器是否配置为使用ASP.NET处理所有请求(也称为通配符处理程序)。如果没有,它将仅通过ASP.NET提供请求,如果确切请求的路径对应于磁盘上的物理文件并具有.aspx扩展名。显然,路由概念完全失败了第一个条件,通常是第二个条件。

Phil Haack在 IIS 6 中有great walkthrough如何执行此操作。

对于 IIS 7 ,您只需要在web.config中的system.webServer下指定correct modules and handlers