In Global.asax che cosa significa?Informazioni sul routing in Global.asax (asp.net-mvc)
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
In Global.asax che cosa significa?Informazioni sul routing in Global.asax (asp.net-mvc)
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
Indica al motore di routing di ignorare questa richiesta e di lasciare a Webform ASP.NET per gestire le cose.
Questo è utile ad esempio per la registrazione ELMAH che utilizza il gestore elmah.axd.
Senza questo ASP.NET tenterebbe di associare tutte le richieste ai gestori AXD ai controller e alle azioni. Avere ignoreRoute significa che l'URL non mapperà l'URL su un controller come per il comportamento predefinito.
Un file .axd è un file virtuale gestito da un gestore HTTP. Vengono utilizzati (tra le altre cose) per fornire varie risorse alla pagina Web, come ad esempio javascript generato automaticamente per i controlli AJAX e simili.
Poiché si tratta di file virtuali, non si desidera che il motore di routing provi a mappare queste richieste ai controllori. È necessario che vengano eseguiti direttamente da ASP.NET.
Questo è ciò che la linea raggiunge.
Questa è una delle cose davvero frustranti dell'apprendimento di MVC: la documentazione di questa funzione è terribile: non c'è quasi nulla lì: http://msdn.microsoft.com/en-us/library/dd470170(VS.100).aspx.
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
In questo modo tutti i file something.axd eseguire al di fuori MVC - che "{*} pathinfo" alla fine permette stringhe di query da ignorare (è una specie di jolly).
Si noti che questo non si applica tale jolly per il percorso, in modo da:
trace.axd?clear=1 //excluded from MVC
mySubFolder/customResource.axd //MVC passed to mySubFolderController.customResource()
disponibile. Non sono riuscito a trovare alcuna documentazione decente su esattamente ciò che è e non è supportato come parole chiave a parte "{resource}" e "{* pathInfo}"
Tuttavia c'è una funzionalità quasi completamente non documentata che ti dà molto più controllo su questi percorsi ignorati:
//ignore all WebForms .aspx/.asmx/.ashx calls anywhere
routes.IgnoreRoute("{*allaspx}", new { allaspx = @".*\.as[pmh]x(/.*)?" });
Se si passa un oggetto anon-inizializzato con una proprietà, che la proprietà diventa una parola chiave che è possibile utilizzare nel percorso.
Non è possibile passare una regex nel percorso, ma è possibile in questa proprietà anon.