Как получить конфигурацию для службы WCF - PullRequest
0 голосов
/ 14 апреля 2010

Я хочу проверить, определена ли конечная точка в конфигурации, прежде чем я попытаюсь создать ее

System.ServiceModel.ClientBase<T> sourceClient = new System.ServiceModel.ClientBase<T>(EndpointName, new EndpointAddress(discoveryUri));

Чтобы проверить это, мне нужно получить конфигурацию, но как мне определить, нужно ли мне использовать WebConfigurationManager или ConfigurationManager. Есть ли способ определить, где размещена служба WCF?

1 Ответ

2 голосов
/ 14 апреля 2010

Вам необходимо иметь эту информацию самостоятельно - сама служба WCF не знает, будет ли она размещена в IIS или самостоятельно. В конце концов, это просто экземпляр ServiceHost, который каким-то образом раскручивается.

Так что, я думаю, вам понадобятся некоторые настройки, которые вы можете установить в web.config или app.config - что-то вроде:

<add key="WCFHost" value="IIS" />

или

<add key="WCFHost" value="CustomApp" />

, а затем оцените это значение и, в зависимости от того, что вы получите, откройте либо WebConfigurationManager, либо просто ConfigurationManager.

Вы можете подумать, что можете проверить наличие HttpContext: если оно NULL, значит, вы работаете в пользовательском приложении, если оно не NULL, то это веб-сценарий. Но это не работает, так как вы можете разместить службу WCF в IIS (таким образом, у вас будет web.config для консультации), но без настроек совместимости ASP.NET, в этом случае HttpContext будет NULL даже если вы используете сценарий веб-хостинга.

Один из вариантов - проверить эту настройку здесь:

AppDomain.CurrentDomain.SetupInformation.ConfigurationFile

Он будет содержать полный путь к файлу конфигурации текущего AppDomain - если это веб-приложение, он будет содержать путь + web.config в конце.

Так что, если вы проверите

if(Path.GetFileName(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile) == "web.config")

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

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