我已经阅读了有关如何使system.web.routing工作的所有这些文章,但所有这些文章都解释了localhost:port。我可以在本地计算机上运行,但是只要我在服务器上上传网站,无论我做什么,路由都会停止工作。
首先我尝试没有任何扩展名(.aspx),但经过所有努力后,我放弃了并添加了扩展程序,但仍然无法在服务器上运行。
感谢任何帮助。
样品:
<{1}} 中的global.ascx
路由处理程序Route test = new Route("home.aspx", new TestRoutingHandler());
Routes.Add(test);
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服务器。
答案 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。