2012-04-27 15 views
5

Ho forse mi aspettavo troppo da ASP.NET, ma in Apache è banale per riscrivere gli URL in modo che richiede qualcosa di simile: http://mysite/myfolder/mypage/niceurlparameter riesce in realtà a servire pagina statica http://mysite/mypage.htmlCosa c'è di sbagliato in questa impostazione di routing Global.asax?

Come posso farlo in Global.asax?

Ho provato questo:

RouteTable.Routes.MapPageRoute("Static HTML", "myfolder/{page}/*", "~/myfolder/{page}.html"); 

ma continua a tornare 404 quando chiedo http://mysite/myfolder/mypage/niceurlparameter.

Tuttavia, questo funziona:

RouteTable.Routes.MapPageRoute("Static HTML", "myfolder/{page}.html/*", "~/myfolder/{page}.html"); 

così io capisco mypage.html al momento della richiesta http://mysite/myfolder/mypage.html/niceurlparameter.

Voglio solo eliminare la parte ".html" nei miei URL. Cosa mi manca?

AGGIORNAMENTO: Per qualche motivo, nel primo caso il carattere jolly '*' non è stato accettato.

Passaggio a:

RouteTable.Routes.MapPageRoute("Static HTML", "myfolder/{page}/{whatever}", "~/myfolder/{page}.html"); 

sembra indirizzare la richiesta alla pagina HTML, ma poi ho l'errore:

There is no build provider registered for the extension '.html'. 

Perché nel mondo sarebbe solo lavorare nel primo caso (con html nell'URL), e non quando html è lasciato fuori?

+0

Quale versione di IIS è in esecuzione? Mi sembra di ricordare che IIS 6 non lo consentirà, è necessario aggiungere un mapping con caratteri jolly. –

+1

Vedere questa domanda così per una possibile soluzione: http://stackoverflow.com/q/9918066/25727 – Jan

+0

IIS è v7.5. Il link suggerito ha aiutato. Grazie – tishma

risposta

3

There is no build provider registered for the extension '.html'

Si riceve questo errore perché i file html statici devono essere gestiti direttamente da IIS. Tuttavia, nel tuo caso il framework ASP.NET MVC sta tentando di gestire il file di tipo .html, che non può.

Quindi, se pensate che questo è ciò che dovete fare dovrete creare un nuovo provider e registrarvi nel file web.config. guarda a questo

Custom file extensions for ASP.NET - help needed!

Si potrebbe semplicemente cambiare il contenuto HTML statico .aspx file. Un semplice copia e incolla farebbe il lavoro e dovrebbe funzionare bene. Saprà come gestire il tipo di file.

+1

Lo accetto, poiché in realtà risolve il problema, ma non scriverei mai nulla di personalizzato che alla fine consentirebbe a un server Web di servire file statici (!?!) La riscrittura dell'URL è un modo migliore per prendere se si desidera il reindirizzamento del file statico. IIS 7.5 e url riscrittura 2 modulo sono la strada da percorrere. – tishma

Problemi correlati