1 Frage: Wie erhalte ich die Service Base-Adresse in app.config?

Frage erstellt am Wed, May 8, 2019 12:00 AM

Ich möchte die Basisadresse erhalten, die in meiner app.config-Datei angegeben ist. Diese lautet " http: //localhost: 8733 /SmgService / "von C #.

Ich habe in Microsoft-Dokumenten nachgesehen. Derzeit weiß ich nicht, wie ich über den C # -Code dahinter auf diese baseAddress zugreifen kann. Jede Hilfe wird gebeten.

 <?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>
    
0
  1. Benötigen Sie dies auf der Dienstseite oder auf der Clientseite?
    2019-05-08 08: 51: 24Z
  2. Serviceseite. hinter Code auf c #
    2019-05-08 08: 54: 34Z
  3. Die Konfigurationsdatei muss sich im selben Ordner wie die ausführbare Datei befinden. Auf einem Server, auf dem Clients nur über GUEST-Berechtigungen verfügen, muss die Leseberechtigung für die Konfigurationsdatei festgelegt sein, damit GUEST die Datei lesen kann, es sei denn, der ausführbare Dienst wird als ADMIN
    ausgeführt
    2019-05-08 09: 09: 40Z
  4. Die BASER-Adresse ist eine Zeichenfolge und kann zur Laufzeit wie jede andere Zeichenfolge dynamisch geändert werden. Daher würde ich normalerweise die String-Methode SUBSTRING wie folgt verwenden: string input = " localhost: 8733 /SmgService /hello "; Zeichenfolge baseAddress = input.Substring (0, input.LastIndexOf ("/"));
    2019-05-08 09: 30: 20Z
  5. Diese Adresse dynamisch
    2019-05-08 09: 55: 08Z
1 Antworten                              1                         

Gelöst

 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;
    
0
2019-05-09 05: 57: 10Z
Quelle platziert Hier