Вопрос

Я пишу компонент, который я хотел бы иметь возможность использовать как в веб-приложениях MVC, так и в WebForms, но я не уверен, как обрабатывать различия между тем, как обрабатывается HttpContext.

Мой компонент включает пользовательский IHttpHandler (для WebForms) или пользовательский ActionResult (для MVC).

Итак, у меня есть несколько вопросов:

  • Есть ли способ использовать IHttpHandler с MVC, не нарушая модель?
  • Допустимо ли использовать HttpContext.Current при попытке написать код, который будет работать для обоих?Мне это кажется немного грубоватым (не уверен, почему), но альтернативой было бы написание и реализация довольно подробного интерфейса для обработки абстракции между HttpContext и ControllerContext.
  • Неужели я поступаю совершенно неправильно?
Это было полезно?

Решение

  1. Да, вы можете просто использовать routes.IgnoreRoute("MyHandler.ashx").Все вернется к оригиналу ASP.NET обработка без нарушения модели.
  2. Нет, я думаю, что это совершенно нормально для использования HttpContext.Current.Я думаю, что когда вы пишете свой собственный обработчик, MVC не очень применим.Вы пишете свой код для ASP.NET, а не ASP.NET MVC или ASP.NET Веб-формы.Легко заставить его работать на обеих моделях (работает OOTB с веб-формами, с IgnoreRoute в MVC).Вы можете усложнить ситуацию больше, чем она должна быть!Помните, что единственная цель шаблонов проектирования (таких как MVC) - простота.Не усложняй ситуацию!
  3. goto 2; Просто напишите простой обработчик!
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top