Sto cercando di implementare il routing URL di ASP.NET utilizzando il System.Web.Routing. E questo sembra funzionare bene sul mio localhost, tuttavia quando vado a vivere sto ricevendo un errore 404 di IIS 7 (File non trovato). FYI l'hosting utilizza Windows Server 2008 IIS7.Rompere la testa per ottenere il routing Url nell'ambiente di hosting IIS 7: ASP.NET
Penso che questo stia facendo una certa differenza nella gestione del meccanismo di routing. Ma non sono in grado di capire che cosa sta succedendo esattamente. Di seguito sono riportate le impostazioni e le modifiche che ho apportato finora per farlo funzionare e per dare un po 'di credito a me stesso funziona perfettamente a livello locale.
Impostazioni Web.Config
E poi ho una sezione system.webServer che ha il seguente markup
<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>
Poi nella sezione Application_Start ho definito una via come segue:
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")));
}
Infine MyRouteHandler appare come segue:
public IHttpHandler GetHttpHandler(RequestContext requestContext)
{
var display = (Page)BuildManager.CreateInstanceFromVirtualPath(
_virtualPath, typeof(Page));
HttpContext.Current.Items["ProductId"] = requestContext.RouteData.Values["Product"];
return display;
}
E sulla pagina instradato sto afferrando il ID prodotto come segue
ProductId = (int)HttpContext.Current.Items["Product"];
E questa è la fine del mio disordine. E questo funziona bene a livello locale. Ci ho provato per un po 'ma non ci sono riuscito finora.
QUALSIASI AIUTO SARÀ DIMENTICATO APPREZZATO.
Grazie ...
avete implementato qualche regola di riscrittura? – Rony