Приложение Asp.net WebForms, которое запускает MVC в подпапке - PullRequest
4 голосов
/ 31 июля 2010

Допустим, у меня есть приложение Asp.net WebForms, которое имеет:

  • несколько * .aspx файлов в корневой папке, которые запускаются как приложение WebForms (без маршрутизации)
  • подпапка, т.е. FormsFolder , в которой есть другие файлы и подпапки, которые запускаются как обычное приложение веб-форм
  • подпапка MvcFolder , которая имеет нормальную структуру приложения Asp.net MVC и также запускает его содержимое как единое целое
  • Маршруты регистрируются с использованием HttpModule вместо global.asax
  • Обе части этого приложения (или оба приложения, если вы предпочитаете) должны работать под одним и тем же приложением IIS (таким образом, есть два приложения, можно использовать только виртуальный каталог)

Вот несколько вопросов:

  1. Этот сценарий вообще возможен?
  2. Можно ли присоединить приложение MVC к приложению WebForms без изменения кода в более поздней версии? Конфигурация может быть изменена, но ее следует избегать, насколько это возможно, если можно использовать конфигурацию подпапок.
  3. Можно ли настроить UrlRoutingModule на запуск только в том случае, если запросы сделаны для определенной подпапки, но не настроены в других частях приложения?

1 Ответ

4 голосов
/ 31 июля 2010

На самом деле это возможно, так как они будут работать в контексте одного и того же приложения, это не должно быть проблемой. Вам, возможно, придется зарегистрировать новый ViewEngine, который указывает на / MvcFolder / Views для ваших представлений. Корень приложения по-прежнему будет ~ /, поэтому вам может потребоваться убедиться, что ваши маршруты учитывают это, например, имея что-то вроде 'MvcFolder / {controller} / {action}' и т. д. в качестве правил маршрутизации.

Приложения MVC и WebForms могут работать бок о бок без проблем. UrlRoutingModule будет соответствовать любым правилам, прежде чем запрос достигнет WebForms HttpHandler, поэтому будьте осторожны с маршрутизацией любых правил, таких как DoSomething.aspx, так как это будет перехвачено MVC.

Если вы решите не регистрировать модуль UrlRoutingModule в базовом файле web.config, вы, вероятно, можете зарегистрировать его в файле /MvcFolder/web.config. Это остановит любые маршруты, находящиеся вне /MvcFolder.

.

Почему вы регистрируете правила в HttpModule? Они будут выполняться для каждого запроса, поэтому вы уверены, что не регистрируете правила в каждом запросе без необходимости?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...