Instradamento MVC di ASP.NET – aggiungi l’estensione .html ai percorsi

Sono abbastanza nuovo per MVC e Routing e mi è stato chiesto di modificare un’app per utilizzare URL diversi. un compito che è un po ‘sopra di me poiché non ho esperienza.

ok, lascia parlare un po ‘di codice:

routes.MapRoute( "CategoryBySeName", // Route name "products/{SeName}", // URL with parameters new { controller = "Catalog", action = "CategoryBySeName" } ); 

funziona come previsto, ma poi il client voleva “.html” alla fine dei percorsi, quindi ho cambiato:

 "products/{SeName}", // URL with parameters 

a:

 "products/{SeName}.html", // URL with parameters 

che non funziona (IIS 404 page – MapRequestHandler) sembra che iis stia cercando di caricare un file fisico con quel nome invece di passarlo all’applicazione.

Simile: il routing ASP.NET MVC per iniziare alla pagina html (non risponde, non duplicare)

Si supponga che un gestore IIS stia probabilmente acquisendo la richiesta prima che MVC sia probabilmente corretto.

Supponendo IIS 7: http://technet.microsoft.com/en-us/library/cc770990(v=ws.10).aspx

È necessario modificare il gestore .html in IIS per utilizzare ASP.NET.

È ansible trovarlo nelle proprietà del sito Web nella scheda della directory home nella configurazione dell’app nella sezione dei mapping in II6.

Qualcosa sulla falsariga di (versione potrebbe essere diversa): C: \ windows \ microsoft.net \ framework \ v4.0.30319 \ aspnet_isapi.dll è ciò che serve per gestire i file .html.

Devi forzare tutte le richieste attraverso la pipeline ASP.NET e puoi farlo aggiungendo solo questa singola linea al web.config della tua applicazione:

    

La modifica del pool di applicazioni da Classic a Integrated ha risolto il problema. grazie mille per il tuo aiuto

Basta aggiungere questa sezione a Web.config e tutte le richieste al percorso / {* pathInfo} verranno gestite dal gestore specificato, anche quando ci sono punti in pathInfo. (tratto dall’esempio Web.config HostStack MVC Host e questa risposta https://stackoverflow.com/a/12151501/801189 )