Domanda

Ho un'applicazione ASP.NET MVC che desidero distribuire sia su IIS6 che su IIS7 e, come tutti sappiamo, IIS6 ha bisogno dell'ornamento di " .mvc " nell'URL.

Questo codice funzionerà per assicurarsi che funzioni su tutte le versioni di IIS? Senza dover apportare modifiche speciali a code, global.asax o file di configurazione per le diverse versioni di IIS.

bool usingIntegratedPipeline = HttpRuntime.UsingIntegratedPipeline;

routes.MapRoute(
    "Default",
    usingIntegratedPipeline ?
        "{controller}/{action}/{id}" : "{controller}.mvc/{action}/{id}",
    new { controller = "Home", action = "Index", id = "" }
);

Aggiorna : ho dimenticato di menzionare. Nessun ISAPI. Sito Web ospitato, nessun controllo sul server IIS.

È stato utile?

Soluzione

Ciò dovrebbe risolvere il problema .mvc poiché la pipeline integrata è rigorosamente IIS7. Ricorda però di modificare le impostazioni sul sito Web IIS7 per utilizzare " 2.0 Integrated Pipeline " altrimenti restituirà falso pure. Anche ofcouse impostare la mappatura di .mvc sull'asapi dll asp.net, ma immagino che tu lo sappia già.

Alcuni piccoli suggerimenti su altre cose che potresti dover ricordare durante la distribuzione di applicazioni MVC su IIS6 che ho trovato utili: http://msmvps.com/blogs/omar/archive/2008/06/30/deploy-asp-net-mvc-on-iis-6-solve-404-compression- e-prestazioni-problems.aspx

Altri suggerimenti

Puoi usare un filtro ISAPI per riscrivere gli URL che ti permetteranno di avere gli URL belli mentre sei ancora su IIS 6.

Guarda, ad esempio, qui

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top