Nella nostra applicazione ASP.NET MVC, abbiamo notato che non possiamo avere il proibito DOS nomi di file — COM1
attraverso COM9
, LPT1
attraverso LPT9
, CON
, AUX
, PRN
, e NUL
— ovunque nei nostri percorsi. Risultano inevitabilmente in IIS che ci dice che il file non può essere trovato, anche quando impostiamo il routing per non controllare prima l'esistenza dei file. Come possiamo aggirare questo?ASP.NET MVC routing vs riservati I nomi dei file in Windows
risposta
Questo è stato risolto in ASP.NET 4. http://haacked.com/archive/2010/04/29/allowing-reserved-filenames-in-URLs.aspx
è possibile applicare una impostazione in web.config che rilassa questa restrizione.
<configuration>
<system.web>
<httpRuntime relaxedUrlToFileSystemMapping="true"/>
<!-- ... your other settings ... -->
</system.web>
</configuration>
Spero che questo aiuti.
Grazie Phil! Mi chiedo perché non sia il default in .net 4. – bkaid
@thekaid: retrocompatibilità: MS non può essere certo che nessuno dipende dal vecchio comportamento. – Richard
@thekaido Ciò che Richard ha detto è esattamente giusto. Saresti sorpreso dei tipi di bug che le persone iniziano a fare affidamento. – Haacked
Dopo aver posto la domanda, ho scoperto che il bug si trova in ASP.NET, non in IIS o ASP.NET MVC, il che significa che non c'è modo di aggirare il problema. L'unica soluzione è vietare manualmente gli URL che corrispondono a questi nomi e questi nomi seguiti da un punto e caratteri casuali.
Sì. :) Il team ASP.NET è a conoscenza di questo bug e sta cercando in esso per ASP.NET 4. Non può garantire se verrà risolto, ma almeno c'è interesse a renderlo migliore per gli sviluppatori. – Levi
Per un motivo simile, non può esistere un tag web.config
in StackOverflow.
http://stackoverflow.uservoice.com/pages/1722-general/suggestions/98871-web-config-tag-404-error
per un altro motivo simile non si può avere gli URL con un punto e una barra Semantic urls with dots in .net
Per divertimento, premere http://stackoverflow.com/com1 e confrontare http://stackoverflow.com/ThisDoesNotExist – kamens
in modo interessante, stackoverflow.com/clock$ funziona correttamente, anche se CLOCK $ è un nome file di dispositivo riservato come bene. –
E sfruttando questa conoscenza, ora ho reso impossibile l'accesso alla mia pagina utente. Woot. –