我正在嘗試使用System.Web.Routing來實現ASP.NET URL路由。而且這似乎在我的本地主機正常工作,但是當我上線我得到一個IIS 7的404錯誤(文件未找到)。僅供參考使用Windows Server 2008 IIS7。在IIS 7宿主環境中打破我的頭來獲取Url路由:ASP.NET
我認爲這在處理路由機制方面有所不同。但我無法弄清楚到底發生了什麼。以下是我迄今爲止所做的設置和更改,併爲我自己提供了一些功勞,它在本地非常合適。
web.config設置
然後我有一個具有以下標記在Application_Start部我已經定義一個路由作爲system.webserver部
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
<modules runAllManagedModulesForAllRequests="true">
<remove name="Session" />
<add name="Session" type="System.Web.SessionState.SessionStateModule"/>
<add name="UrlRoutingModule"
type="System.Web.Routing.UrlRoutingModule,
System.Web.Routing, Version=3.5.0.0,
Culture=neutral,
PublicKeyToken=31BF3856AD364E35" />
</modules>
<handlers>
<add name="UrlRoutingHandler" preCondition="integratedMode" verb="*" path="UrlRouting.axd" type="System.Web.HttpForbiddenHandler, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</handlers>
</system.webServer>
然後如下:
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"];
這是我惹的結束。這在當地很好。我一直在嘗試這一段時間,但迄今沒有成功。
任何幫助將深表滿意。
謝謝...
你有沒有實施任何重寫規則? – Rony 2010-06-10 17:56:14