在IIS 7托管环境中破解我的头脑:ASP.NET

我正在尝试使用System.Web.Routing实现ASP.NET URL路由。 这似乎在我的本地主机上正常工作,但是当我上线时,我收到IIS 7的404错误(找不到文件)。 仅供参考,主机使用Windows Server 2008 IIS7。

我认为这在处理路由机制方面有所不同。 但我无法弄清楚到底发生了什么。 以下是我到目前为止所做的设置和更改,以使其工作,并给自己一些信誉,它在本地工作绝对正常。

Web.Config设置

然后我有一个system.webserver部分,它具有以下标记

           

然后在Application_Start部分中,我定义了一条路由,如下所示:

 void Application_Start(object sender, EventArgs e) { RegisterRoutes(RouteTable.Routes); } void RegisterRoutes(RouteCollection routes) { routes.Add( "MyRoute", new Route("ProductDetail/{ProductId}/{ProductName}", new MyRouteHandler("~/ProductDetail.aspx"))); } 

最后MyRouteHandler看起来如下:

  public IHttpHandler GetHttpHandler(RequestContext requestContext) { var display = (Page)BuildManager.CreateInstanceFromVirtualPath( _virtualPath, typeof(Page)); HttpContext.Current.Items["ProductId"] = requestContext.RouteData.Values["Product"]; return display; } 

在路由页面上,我抓住产品ID如下

 ProductId = (int)HttpContext.Current.Items["Product"]; 

这是我一团糟的结束。 这在当地很好用。 我已经尝试了一段时间但到目前为止没有成功。

任何帮助都将得到极大的赞赏。

谢谢…

不确定您是否能够找出问题所在…但是如果您仍在寻找解决方案,那么您可以尝试以下方法。 我不得不在一段时间内面对相同的情况,并使用Web配置中的重写规则使用它,您将不需要任何路由机制。 所以首先我建议你删除你可能拥有的任何路由设置和Global.asax文件中的代码。

然后在该部分中,您可以添加如下的重写规则

               

如果您在理解重写机制时遇到问题,我建议您阅读Scott Guthrie 撰写的这篇文章 。

我认为这应该适用于IIS 7.0或7.5环境。

我遵循了这篇文章: 如何:使用Web表单路由

在我找到它之前,我在共享主机上遇到了问题而在本地没有问题。 这是我的web.config。

我的主机使用IIS 7与集成管道,我错过了这个:

     

编辑:根据您的设置和代码,唯一剩下的就是检查您是否在web.config中定义了Routing dll,并将其部署到您的bin目录:

  

在web.config中试试这个。 为我工作。

    

只是为了告知最终我的解决方案……在IIS7上将管道模式更改为Integrated,然后我在上面的链接中添加了一些关于web.config的行… http://msdn.microsoft.com/en-我们/库/ cc668202.aspx

祝好运。