Pergunta

Eu estou usando mapa estrutura como a loja MVC por Rob Conery faz e eu tenho uma AdminController e, assim, chegar a ele eu só digitar:

website/Admin/action

No entanto, se eu perca soletrar o nome do controlador eu recebo o erro abaixo:

Exceção detalhes: System.ArgumentNullException: Valor não pode ser nulo. Nome do parâmetro: chave

Há erro ocorre nesta linha:

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

Alguém tem alguma idéia de como eu posso lidar com esse erro ou não permitir que isso aconteça em todos e talvez apenas Goto uma página 404 ??

Cheers antecipadamente

Foi útil?

Solução

O problema é que, se não houver nenhum controlador com o nome do tipo esperado (ou seja, se o usuário digita " AMDIN " a classe base ControllerFactory irá procurar por " AMDIN Controlador "e não vai encontrá-lo, mas ainda irá chamar seu método anulado). Nesse caso, a variável controllerType será nulo. Então você pode apenas verificar se há nula antes da linha que você citou e depois (se ele é nulo) quer:

a) a execução de uma correcção ortografia, tais como a uma cfeduke sugere

ou B) simplesmente lançar um HttpException com o código de status 404 (que deve causa o erro 404 que você está procurando).

NOTA: Se você fizer uma correção ortográfica, você provavelmente deve fazer um Response.Redirect para o novo URL, ao invés de apenas silenciosamente carregar o controlador de direito, de que maneira as mudanças barra de endereços para refletir a correção ortográfica

Outras dicas

Você tem um par de opções diferentes (ou, se quiser, duas coisas que você pode combinar para uma solução). Para remover alguns dos potenciais problemas entre o bar cadeira e endereço você pode implementar uma solução de Soundex < a href = "http://www.csharphelp.com/archives2/archive394.html" rel = "nofollow noreferrer"> em C # usando o novo quadro de roteamento para potencialmente capturar alguns erros de ortografia e re-encaminhá-los para o URL esperado (e / ou adicionar rotas para o que você acredita erros ortográficos comuns ou pedidos será). Isso, no entanto, não é uma solução que vai resolver completamente o problema de forma que você precisa olhar para execução páginas de erro personalizadas para sua aplicação.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top