获取服务的 localhost 的 DNS 条目
Get DNS entry of localhost for service
对于 IIS 托管服务,我必须获取本地计算机的完整地址。
在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 地址。
有什么选择吗?
尝试将配置文件加载到 linq to xml 文档中,然后你可以查询所有你想要的...
var config = XDocument.Load("Web.Config");
var baseAddress = config.Elements("baseAddresses")
.Elements()
.First()
.Attribute("baseAddress")
.Value;
如果所有其他方法都失败了,请使用蛮力方法:)
另一种选择可能是...
既然你在请求服务器的上下文中,为什么不使用请求对象...
var host = Request.Url.Host;
那更简单!
对于 IIS 托管服务,我必须获取本地计算机的完整地址。
在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 地址。
有什么选择吗?
尝试将配置文件加载到 linq to xml 文档中,然后你可以查询所有你想要的...
var config = XDocument.Load("Web.Config");
var baseAddress = config.Elements("baseAddresses")
.Elements()
.First()
.Attribute("baseAddress")
.Value;
如果所有其他方法都失败了,请使用蛮力方法:)
另一种选择可能是... 既然你在请求服务器的上下文中,为什么不使用请求对象...
var host = Request.Url.Host;
那更简单!