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?
Quale versione di IIS è in esecuzione? Mi sembra di ricordare che IIS 6 non lo consentirà, è necessario aggiungere un mapping con caratteri jolly. –
Vedere questa domanda così per una possibile soluzione: http://stackoverflow.com/q/9918066/25727 – Jan
IIS è v7.5. Il link suggerito ha aiutato. Grazie – tishma