Как получить сервисный базовый адрес в app.config?
Я хотел бы получить базовый адрес, указанный в моем файле app.config, который является " http://localhost:8733/SmgService/" из C#.
Однако я просмотрел документы Microsoft, в настоящее время я не знаю, как получить доступ к этому baseAddress из кода C#. Любая помощь приветствуется.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="aspnet:UseTaskFriendlySynchronizationContext"value="true" />
</appSettings>
<system.web>
<compilation debug="true" />
</system.web>
<system.serviceModel>
<services>
<service name="SmgService.PrintService">
<host>
<baseAddresses>
<add baseAddress = "http://localhost:8733/SmgService/"/><!--i need this address-->
</baseAddresses>
</host>
<endpoint address="" binding="basicHttpBinding" contract="SmgService.IPrintService">
<identity>
<dns value="localhost"/>
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="True" httpsGetEnabled="True"/>
<serviceDebug includeExceptionDetailInFaults="False" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
1 ответ
Решаемая
ServicesSection servicesSection = ConfigurationManager.GetSection("system.serviceModel/services") as ServicesSection;
foreach (ServiceElement service in servicesSection.Services)
{
if (service.Name == "SmgService.PrintService")
{
foreach (BaseAddressElement item in service.Host.BaseAddresses)
{
MessageBox.Show(item.BaseAddress.ToString());
}
}
}
string resultBase = "";
ServicesSection services = ConfigurationManager.GetSection("system.serviceModel/services") as ServicesSection;
foreach (ServiceElement service in services.Services)
{
if (service.Name == whichService)
{
BaseAddressElementCollection baseElement = service.Host.BaseAddresses;
foreach (BaseAddressElement item in baseElement)
{
resultBase = item.BaseAddress;
}
}
}
return resultBase;