Pergunta

Eu estou escrevendo um componente que eu gostaria de ser capaz de usar tanto em aplicações web MVC e WebForms, mas eu não tenho certeza de como lidar com as diferenças entre como HttpContext é tratado.

Meu componente envolve um IHttpHandler (para WebForms) personalizado ou um ActionResult personalizado (por MVC).

Então eu tenho algumas perguntas:

  • Existe uma maneira de usar um IHttpHandler com MVC sem quebrar o modelo?
  • É aceitável usar HttpContext.Current ao tentar escrever código que irá trabalhar para ambos? Parece um pouco bruto-força-ish para mim (não sei porquê), mas a alternativa seria escrever e implementar um bastante detalhado interface para lidar com a abstração entre HttpContext e ControllerContext.
  • Am I ir sobre isso completamente errado?
Foi útil?

Solução

  1. Sim, você pode apenas usar routes.IgnoreRoute("MyHandler.ashx"). Ele vai cair de volta para a manipulação ASP.NET original sem quebrar o modelo.
  2. Não, eu acho que é perfeitamente OK usar HttpContext.Current. Eu acho que quando você está escrevendo seu próprio manipulador, MVC não é muito aplicável. Você está escrevendo seu código para ASP.NET , não ASP.NET MVC ou ASP.NET Web Forms. É fácil para torná-lo trabalhar em ambos os modelos (funciona OOTB com formulários Web, com IgnoreRoute em MVC). Você pode fazer coisa mais complicada do que deveriam ser! Lembre-se, o único propósito de padrões de projeto (como MVC) é a simplicidade. Não faça as coisas complicadas!
  3. goto 2; Basta escrever um manipulador simples!
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top