Два сайта ASP.NET, совместно использующие файлы приложения, но с другим web.config

Использование одного из сервисов по большей части требует много времени - вы пишете свой код и позволяете им беспокоиться об управлении модулем, поддержании вашего процесса, создании канала публикации, исправлении ОС и т. Д.

Напротив, наличие собственной виртуальной машины дает вам больший контроль, но при этом требует больше предварительных затрат и постоянных временных затрат.

Еще одним соображением является то, что некоторые хостеры и провайдеры облачных услуг предлагают собственные или отличные варианты технологий. У них есть свои причины, и они предлагают ценность, но это означает, что если вы хотите переключить облачных провайдеров, это может означать, что вам придется переписать код, сценарии развертывания и т. Д. С другой стороны, использование виртуальных машин со стандартной ОС в качестве базового показателя довольно общий. Если вы автоматизируете / скрипте / документируете конфигурацию своих виртуальных машин и ваш код остается общим, тогда ваши параметры остаются открытыми. Если вы берете зависимость от проприетарной облачной технологии, то было бы хорошо абстрагировать ее за интерфейс, чтобы она была отделена от компонентов и не распространялась по всему коду.

1123 Я сделал и то и другое. Я недавно прошел путь к ВМ, главным образом потому, что хотел получить опыт обучения. Мне пришлось:

  • получить виртуальную машину у провайдера облачных услуг
  • Мне пришлось обновить и исправить ОС
  • Мне нужно было установить и настроить git в качестве публикации channel
  • Мне пришлось написать несколько сценариев и использовать такие вещи, как forever, чтобы он работал
  • Мне пришлось настроить обратный http-прокси, чтобы он запускал несколько сайтов.
  • Мне пришлось настроить DNS с провайдером облака, открыть порты для git и т. Д ...

Список можно продолжить. В конце концов, это стоило мне больше времени без программирования, но я узнал о многих других вещах. Если они важны для вас, попробуйте. Если вы хотите сосредоточиться на написании своего кода, тогда вам может помочь хостинг-провайдер.

В конце у меня также было больше вариантов - я хотел добавить второй сайт. Я добавил en entry в свой обратный прокси-сервер и добавил свой скрипт, чтобы запустить другое приложение с другим, вуаля, другим сайтом. Больше контроля. После этого я хотел попробовать mongodb - просто - установил его.

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

Nodejitsu с открытым исходным кодом свои инструменты, что также облегчает, если вы делаете свои собственные.

Если вы делаете это самостоятельно, вот несколько ссылок, которые могут вам помочь:

Поддержание работоспособности сервера:

https://github.com/nodejitsu/forever/

http://blog.nodejitsu.com/keep-a-nodejs-server-up-with-forever

https: // github.com/bryanmacfarlane/svchost

Универсальный автоматический запуск и перезапуск Upstart и Monit с помощью мониторинга

http://howtonode.org/deploying-node-upstart-monit

Узел кластера Запуск одного процесса на ядро ​​

http://nodejs.org/docs/latest/api/cluster.html

[1137 Обратный прокси-сервер

https://github.com/nodejitsu/node-http-proxy

https://github.com/nodejitsu/node -http-proxy / Issues / 232

http://blog.nodejitsu.com/http-proxy-middlewares

https: / /github.com/nodejitsu/node-http-proxy/issues/168#issuecomment-3289492

http://blog.argteam.com/coding/hardening-node-js- для-прод ction-part-2-using-nginx-to-избежать-node-js-load /

Сценарий установки

https://github.com/bryanmacfarlane / svcinstall

Сценарий выхода из оболочки на основе кода выхода процесса

Сайт публикации

Использование git для публикации на веб-сайте

5
задан Jakob Christensen 16 June 2009 в 13:01
поделиться

4 ответа

Короткий ответ - нет, если вы хотите хранить код в одном месте. Вероятно, лучшим решением является загрузка приложением пользовательского файла конфигурации в зависимости от того, каким вы определяете сайт (предположительно, заголовок хоста?).

Может быть полезно что-то вроде ConfigurationManager.OpenExeConfiguration .

] Я полагаю, что альтернативой является создание соглашения о конфигурации, в котором у вас есть все в одном файле и использование GetSection (с каким-то префиксом для конкретного приложения), чтобы получить конкретные настройки того, что вы хотите.

5
ответ дан 14 December 2019 в 08:58
поделиться

должно быть, будет использоваться web.config в виртуальном приложении. Если макет является иерархическим, вам может потребоваться наследование web.config

0
ответ дан 14 December 2019 в 08:58
поделиться

Это просто невозможно.

Почему ???

Из-за рабочего процесса asp.net будет читать файл конфигурации по умолчанию из физической папки, в которой физически находится приложение. Виртуальные каталоги не имеют ничего общего с web.config.

1
ответ дан 14 December 2019 в 08:58
поделиться

Я предполагаю, что у вас есть приложение A, приложение B, приложение C и т. Д., Которые абсолютно одинаковы, за исключением того, что они отличаются некоторыми свойствами конфигурации, как определено в их файлах web.config .

Конечно, это возможно - проще всего настроить проект как веб-приложение, затем скомпилировать, а затем поделиться этой dll среди приложений. Вы можете использовать GAC, если хотите.

Вы можете настроить отдельные сайты в IIS, которые указывают на общий каталог (или использовать виртуальный каталог в каждом из них), где находится вся логика, но вы не можете совместно использовать app_code папка.

РЕДАКТИРОВАТЬ

У RichardOD есть лучший ответ выше, и я реализовал нечто подобное раньше. По сути, я настраиваю настраиваемый файл конфигурации, на который ссылается web.config (чтобы предотвратить перезапуск приложения при внесении в него изменений). Этот файл читается по имени хоста и содержит определенные свойства для каждого хоста.

Все, что я делаю, это добавляю заголовки хоста в IIS и запись для этого хоста в настраиваемом файле конфигурации. Готово.

0
ответ дан 14 December 2019 в 08:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: