1 Câu hỏi: Làm cách nào để lấy Địa chỉ cơ sở dịch vụ trong app.config?

câu hỏi được tạo ra tại Wed, May 8, 2019 12:00 AM

Tôi muốn nhận được địa chỉ cơ sở được chỉ định trong tệp app.config của tôi, đó là " http: //localhost: 8733 /SmgService / "từ C #.

Tuy nhiên, tôi đã xem xét các tài liệu của Microsoft, hiện tại tôi không biết cách truy cập cơ sở này từ mã C # phía sau. Bất kỳ trợ giúp đều được đánh giá cao.

 <?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. bạn cần điều này ở phía dịch vụ hay phía khách hàng?
    2019-05-08 08: 51: 24Z
  2. Phía dịch vụ. đằng sau mã trên c #
    2019-05-08 08: 54: 34Z
  3. Tệp cấu hình phải nằm trong cùng thư mục với tệp thực thi. Trên máy chủ nơi khách hàng chỉ có đặc quyền GUEST, quyền đọc tệp tệp cấu hình phải được đặt để cho phép GUEST đọc tệp trừ khi dịch vụ thực thi đang được chạy dưới dạng ADMIN
    2019-05-08 09: 09: 40Z
  4. Địa chỉ BASER là một chuỗi có thể được thay đổi linh hoạt trong thời gian chạy như bất kỳ chuỗi nào khác. Vì vậy, thông thường tôi sẽ sử dụng phương thức chuỗi SUBSTRING như sau: string input = " localhost: 8733 /SmgService /hello "; chuỗi baseAddress = input.Sub chuỗi (0, input.LastIndexOf ("/"));
    2019-05-08 09: 30: 20Z
  5. Địa chỉ này tự động
    2019-05-08 09: 55: 08Z
1 Câu trả lời                              1                         

Đã giải quyết

 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
nguồn đặt đây