Как узнать, на каком сайте запущено веб-приложение?

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

На моей машине для разработки я могу просто загрузить конфигурацию так:

WebConfigurationManager.OpenMappedWebConfiguration(webMappedFile, virtualPath);

Но на тестовой машине (сервер AppFabric) я получаю исключение, и мне кажется, что мне нужно указать третий параметр, который фактически является сайтом, на котором выполняется веб-приложение:

WebConfigurationManager.OpenMappedWebConfiguration(webMappedFile, virtualPath, "MySite");

Поэтому я попытался жестко закодировать это, и это сработало. В любом случае это неприемлемо, поэтому мне нужно динамически предоставлять сайт в WebConfigurationManager, потому что я не знаю, на каком сайте будет работать служба в будущем. Кто-нибудь знает, как этого добиться?

Благодарю.

2 ответа

Решение

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

Request.ServerVariables("server_name")

см.: http://msdn.microsoft.com/en-us/library/ms525396(VS.90).aspx

Редактировать на основе вашего комментария

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

Затем у вас есть два варианта:

  • Отправить имя в качестве параметра из слоя, который имеет httpconext
  • Не уверен, что это сработает: но вы можете попробовать добавить ссылку на system.web в ваш проект. Он может скомпилироваться, но вы можете получить исключение нулевой ссылки при его запуске. Вероятно, стоит попробовать.

Как насчет Server.MachineName

Другие вопросы по тегам