URL-маршрутизация и web.config вложенной папки - PullRequest
1 голос
/ 09 февраля 2010

Я использую URL-маршрутизацию (с веб-формами) в следующем формате:

http://host/project/{projectid}/{pageName}

Другой вариант заключается в том, что пользователь ссылается на субприложение:

http://host/project/{projectid}/{application}/{pageName}

Подприложениеэто не новое веб-приложение, а просто виртуальный каталог.
В моем подприложении есть файл web.config, который содержит некоторые специфические appsettings / connstrings.

Все работает без маршрутизации URL.

Однако, когда я запрашиваю URL в перенаправленной форме, web.config подпрограммы не обрабатывается, и я получаю нулевую ссылку на все appsettings / connstrings (через ConfigurationManager).

Вот код моего пользовательского обработчика:

string path = String.Format(_pagesFormat, application, pageName);   
return (IHttpHandler) BuildManager.CreateInstanceFromVirtualPath(path, typeof(Page));

Это работает, если я изменил бы свой маршрут на http://host/{application}/{projectid}/{pageName}
Это, вероятно, запускает IIS для загрузки web.config виртуального каталога.

Можно ли как-то принудительно загрузить настройки вложенного web.config?

РЕДАКТИРОВАТЬ:
У этого человека похожая проблема:
http://forums.asp.net/p/1452479/3317775.aspx

Есть идеи?

1 Ответ

1 голос
/ 13 февраля 2010

По какой-то причине тег system.web и несколько других тегов обрабатываются
web.config (который находится в виртуальном каталоге).

Я решил поместить настройки своего приложения и настройки строки подключения в два отдельных файла в корне:

  • web.config в корне (IS, компиляция, настройка обработчика)
  • web.AppSettings.config в корне
  • web.Connections.config в корне

  • web.config для виртуального каталога (пользовательский элемент управления, конфигурация главной страницы)

...