2016-10-07 1 views
1

У меня настроен дизайн лазурного сайта (MVC), и все работает нормально, пока я не попытался добавить проект WebAPI к решению, которое развернуто на azure.Приложение развернуто в лазурном режиме с использованием неправильного web.config

Моего отображение виртуальных каталогов выглядит

  1. виртуального ----- физического --- IsApplication
  2. /----- сайт \ Wwwroot \ ------ IsApplicaiton (да) [Путь для Mvc проекта] Application
  3. /апите ---- сайта \ услуги \ ------- IsApplication (нет)
  4. /API/код ------ сайта \ услуги \ code \ ------- IsApplication (yes) [Путь к проекту WebAPI]

Приложение MVC работает нормально, но приложение WebAPI (которое является пустой эстакадой из VS WebApplication -> WebAPI2) - нет. После изменения WebApi для отключения страницы пользовательских ошибок выяснилось, что проблема заключается в пространстве имен, включенных в приложение MVC web.config (конечно, проект WebAPI не имеет ссылки на него, и он не должен). Но почему WebAPI даже беспокоит себя с web.config, сидящим в приложении MVC, когда у него есть свой собственный?

+1

Если вы работаете в веб-АФИ в то же site/apppool как MVC, тогда есть порядок приоритета, необходимый в методе App_Start(). Но похоже, что вы этого не делаете. Можете ли вы включить подробное описание исключения? –

+0

Я не знаю об активах в Azure и о том, как это работает. Но я хочу сделать несколько приложений на одном сайте. Предполагается, что MVC является клиентом для приложения WebAPI. Насколько я понимаю наследование web.config, он должен наследовать настройки из родительских папок, а не родительских виртуальных каталогов. – user2184057

ответ

1

Настройки Web.config «водопад» вниз в приложениях. Поэтому, если у вас есть приложение, размещенное в корневом каталоге «/», а затем другое приложение, размещенное под ним (например, «/ api/code»), тогда все настройки из web.config корневого веб-приложения будут добавлены в настройки суб-приложение web.config. Физическое расположение приложения не имеет отношения к такому поведению. Все это зависит от структуры виртуального каталога. Вот почему вы видите ошибки, связанные с пространством имен приложения MVC в приложении WebAPI.

Чтобы исправить это, вы должны использовать <remove name="..." /> или <clear /> тегов или inheritInChildApplications атрибута в web.config вашего WebAPI, чтобы удалить параметры, которые передаются из приложения MVC. Пример того, как сделать это можно найти в этом SO ответ: https://stackoverflow.com/a/5968658/6387007

Для получения дополнительной информации о наследовании web.config вы можете проверить эту статью MSDN тоже: https://msdn.microsoft.com/en-us/library/ms178685.aspx

+0

Спасибо, мужчины. Я был убежден, что это было наследование физической структурой, а не виртуальной. – user2184057