Ho notato che l'estensione MapRoute include un overload che accetta un parametro string [] chiamato "namespace". Ho letto quello che Google aveva per me su di esso, e presumibilmente questo è per aiutare il framework a trovare controller in posti che altrimenti non guarderebbero.ASP.Net MVC Controller Namespace array
Ho fatto un po 'di spike e ho provato a mettere i controller in posizioni strane. Ne ho inserito uno nella cartella Scripts; Ne ho persino creato uno in un assieme separato con uno spazio dei nomi radice separato.
Senza mettere alcun parametro nello spazio dei nomi, tutto ha funzionato bene. Se metto solo uno dei namespace nel param dei namespace, trova ancora tutti i miei controller. Ho pensato che forse avrebbe usato quell'array per disambiguare tra controller identici, ma non è successo neanche quello. Un HomeController in MyProj.Controllers e uno in SomeOtherName.Stuff si scontreranno ancora.
Quindi la mia domanda è, il parametro è deprecato? O è ancora usato in qualche modo in un modo che devo ancora discernere?
Riconosco che è così che dovrebbe funzionare, e ho trovato lo stesso punto che stai descrivendo in DefaultControllerFactory, ma quando ho eseguito i test sopra descritti, non è così che ha funzionato. Ho fornito spazi dei nomi che non esistevano e la fabbrica ha ancora trovato il mio controller. – Paul
Il codice in ControllerTypeCache sembra sicuro che funzioni in questo modo per me. Puoi eseguirne il debug costruendo con la fonte. Forse c'è qualcosa che non hai fornito? –
Sono d'accordo che sembra così, e ho costruito w/the source prima di testare; Proverò di nuovo con alcuni parametri diversi. – Paul