我读过所有这些关于如何让system.web.routing工作的文章,但是所有这些文章都是关于localhost:port的解释。我可以让它在本地机器上运行,但一旦我将站点上传到服务器上,无论我做什么,路由都会停止工作。
首先,我尝试不使用任何扩展名(.aspx),但经过所有努力后,我放弃并添加了扩展名,但它仍然不能在服务器上工作。
任何帮助都是非常感谢的。
示例:
在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));
}在httpModules下的web.config中
add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" 这很简单,可以在本地机器上运行,但不能在web服务器上运行。
发布于 2009-05-23 00:25:53
验证web服务器是否配置为使用ASP.NET (也称为通配符处理程序)处理所有请求。如果不是,它将仅在所请求的确切路径对应于磁盘上的物理文件并且扩展名为.aspx的情况下才通过ASP.NET服务请求。显然,路由概念完全不符合第一个条件,通常也不符合第二个条件。
Phil Haack有一个关于如何在IIS6中做到这一点的great walkthrough。
对于IIS7,您只需要在web.config中的system.webServer下指定correct modules and handlers。
发布于 2010-12-12 01:38:35
对于IIS7+,我发现添加到Web.config的部分突然让一切都正常了:
<modules runAllManagedModulesForAllRequests="true" />与运行在Cassini web服务器上的VS一样令人困惑,它工作得很好。
https://stackoverflow.com/questions/900510
复制相似问题