ASP. NET работа с несколькими web.configs - PullRequest
0 голосов
/ 10 февраля 2020

Структура IIS

   MyWebsite     
   ..
   ..
   applications\  <--folder
       \website1  <--web 1 contains its web.config file
       \website2  <--web 2 contains its web.config file
   ..
   bin\  <- contains both the dlls ABC.abc and DEF.def 
   web.config

Файл root web.config содержит

   <namespaces> 
     <add namespace="ABC.abc" />
     <add namespace="DEF.def" />
   </namespaces>

, когда root веб-сайт загружается, работает нормально. Но при загрузке website1 \ website2 он жалуется

Сообщение об ошибке компилятора: CS0246: не удалось найти тип или имя пространства имен 'AB C' (отсутствует директива using или ссылка на сборку?)

Это работает, если я добавляю два dll в папку bin на website1 и website2, но я не хочу копировать эти dll во все мои проекты.

Можно ли не загружать root web. файл конфигурации при загрузке проекта website1, использовать только файл web.config из проекта website 1? или другой способ пропустить загрузку dll (AB C .ab c) при загрузке приложения website1?

Ответы [ 2 ]

0 голосов
/ 11 февраля 2020

Обычно рекомендуется добавлять приложение под веб-сайт, если вы используете IIS Deployment, просто щелкните правой кнопкой мыши на веб-сайтах и ​​добавьте приложения, это должно работать

, но в вашем случае я думаю, что вы могли бы использовать какой-либо провайдерский общий сайт

здесь вы можете сделать следующее:

MAIN ==> ваш основной сайт не должен быть веб-сайтом на стороне сервера и должен быть веб-сайтом c со Html и (Javascript)

Main2 => будет виртуальным путем внутри веб-сайта с Вашим текущим основным приложением с Web.Config

Sub 1 => Sub 1 будет виртуальным путем внутри веб-сайта, он будет содержать ваше приложение на стороне сервера с Web.Config

Sub 2 => будет виртуальным путем внутри веб-сайта, содержащего Ваше приложение на стороне сервера с Web.Config

вы можете использовать MAIN для перенаправления на Sub1 и Sub2 следующим образом:

Параметр запроса Скажите, что путь к сайту равен www.x.com, теперь вы нужно в вашем ГЛАВНОМ стати c сайте т. е. скрипт, который теперь будет читать параметры запроса, если Queryparam имеет значение null или не имеет значения val, затем перенаправить на виртуальный сайт Main2. если Queryparam, скажем, app1, то перенаправить на виртуальный сайт Sub1. если Queryparam - app2, перенаправьте на виртуальный сайт app2.

в конце вы можете выглядеть примерно так:

1. www.x.com 2. www.x.com?app=app1 3. www.x.com?app=app2

0 голосов
/ 11 февраля 2020

Это неправильный способ развертывания двух проектов в виде папки на вашем веб-сайте. Это может вызвать конфликт конфигурации. Теперь, когда вы собираетесь разместить website1 / 2 под своим сайтом, вы должны развернуть их как приложение и скопировать dll как на website1, так и website2.

https://docs.microsoft.com/en-us/iis/configuration/system.applicationhost/sites/site/application/

Если вы не хотите копировать эти dll во все проекты. Тогда вы можете попытаться объединить два проекта в один проект. Конечно, вы можете зарегистрировать свои DLL на GA C или использовать <probing>.

...