题
我已经阅读所有这些文章关于如何使系统。网。路由选择工作,但所有这些文章说明了上localhost:口。我可以得到这个工作月的当地机,但只要我上传网站的服务器、路由停止工作无论我做什么。
首先,我想没有任何扩展名(.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));
}
在网。config下httpModules
add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
这是如此的简单和工作在一个地方机,但是不上网服务器。
解决方案
确认网服务器配置,以处理所有的请求ASP.NET (也称为配符handler)。如果不是,它只会请求通过ASP.NET 如果的确切路径要求对应于物理磁盘上的文件和有.aspx扩展。很明显的路由概念完全失败的第一个条件,通常是第二次。
菲尔*哈克有一个 伟大的演练 关于如何做到这一点 IIS6.
对于 IIS7, 你只需要拥有的 正确的模块和处理程序 下指定的系统。网络服务器的网络。config。
其他提示
有关IIS7 +我发现添加到web.config的部分突然使一切工作:
<modules runAllManagedModulesForAllRequests="true" />
令人混淆,因为在卡西尼Web服务器上运行的VS,它的工作就好了。
不隶属于 StackOverflow