Как узнать, на каком сайте запущено веб-приложение?
В настоящее время я запускаю службу 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 в ваш проект. Он может скомпилироваться, но вы можете получить исключение нулевой ссылки при его запуске. Вероятно, стоит попробовать.