Domanda

Sto usando la mappa della struttura come fa lo storefront MVC di Rob Conery e ho un AdminController e quindi per arrivarci basta digitare:

website/Admin/action

tuttavia, se mi manca il nome del controller, visualizzo l'errore di seguito:

Dettagli eccezione: System.ArgumentNullException: il valore non può essere nullo. Nome parametro: chiave

Si verifica un errore su questa riga:

Controller controller = ObjectFactory.GetInstance(controllerType) as Controller;

Qualcuno ha qualche idea su come posso gestire questo errore o non permettere che accada affatto e forse basta andare su una pagina 404 ??

Saluti in anticipo

È stato utile?

Soluzione

Il problema è che se non esiste un controller con il nome del tipo previsto (ovvero se l'utente digita " Amdin " la classe base ControllerFactory cercherà " Amdin Controller " e non lo troverà, ma chiamerà comunque il tuo metodo di sostituzione). In tal caso, la variabile controllerType sarà nulla. Quindi puoi semplicemente controllarlo per null prima della riga che hai citato e poi (se è null):

A) Implementa una correzione ortografica come quella suggerita da cfeduke

o B) è sufficiente lanciare un HttpException con il codice di stato 404 (che dovrebbe causare l'errore 404 che stai cercando).

NOTA: se esegui una correzione ortografica, dovresti probabilmente eseguire una risposta. Reindirizza al nuovo URL, anziché caricare silenziosamente il controller corretto, in questo modo la barra degli indirizzi cambia in modo da riflettere la correzione ortografica

Altri suggerimenti

Hai un paio di opzioni diverse (o, se vuoi, due cose che puoi combinare per una soluzione). Per rimuovere alcuni dei potenziali problemi tra la sedia e la barra degli indirizzi puoi implementare una soluzione SoundEx < a href = "http://www.csharphelp.com/archives2/archive394.html" rel = "nofollow noreferrer"> in C # utilizzando il nuovo framework di routing per catturare potenzialmente alcuni errori di ortografia e reindirizzarli al URL previsto (e / o aggiungi percorsi per ciò che ritieni siano comuni errori di ortografia o richieste). Questa, tuttavia, non è una soluzione che risolverà completamente il problema, quindi dovrai consultare l'implementazione di pagine di errore personalizzate per la tua applicazione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top