2015-01-20 5 views
1

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

В Web.config, что значение отлично сконфигурирован

<services> 
    <service name="MyService.Service.MyService"> 
     <endpoint address="" behaviorConfiguration="MexFlatWsdlBehavior" 
     binding="basicHttpBinding" bindingConfiguration="secureHttpBinding" 
     name="TpsNotification" bindingNamespace="http://org.com/MyService/2014/11" 
     contract="MyService.Service.ISomeEndpoint"> 
     <identity> 
      <dns value="THESERVER.myorg.net" /> 
     </identity> 
     </endpoint> 
     <endpoint address="" behaviorConfiguration="MexFlatWsdlBehavior" 
     binding="basicHttpBinding" bindingConfiguration="secureHttpBinding" 
     name="TpsPluginFramework" bindingNamespace="http://org.com/MyService/2014/11" 
     contract="MyService.Service.IOtherEndpoint"> 
     <identity> 
      <dns value="THESERVER.myorg.net" /> 
     </identity> 
     </endpoint> 
     <host> 
     <baseAddresses> 
      <add baseAddress="https://THESERVER.myorg.net:443/MyService.svc" /> 
     </baseAddresses> 
     </host> 
    </service> 
</services> 

Любой из значения Dns или BaseAddress будет прекрасно. Но я не вижу возможности получить эту ценность от IIS.

Я пробовал ConfigurationManager и WebConfiguration и HostingEnvironment.

Кроме того, я попытался

var hostName = System.Net.Dns.GetHostName(); 

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

Любые варианты?

ответ

0

Попробуйте загрузить конфигурационный файл, чтобы в LINQ к XML-документу, то вы можете запросить все, что вы хотите ...

var config = XDocument.Load("Web.Config"); 
var baseAddress = config.Elements("baseAddresses") 
    .Elements() 
    .First() 
    .Attribute("baseAddress") 
    .Value; 

Если все остальное терпит неудачу, используйте грубую силу подход :)

Другим вариантом может быть ... Так как вы в контексте запроса на сервер почему бы не использовать объект запроса ...

var host = Request.Url.Host; 

Это было проще!

+0

Это во время настройки/запуска. Нет OperationContext, HttpContext, Request, ... –

Смежные вопросы