簡體   English   中英

使用指定的地址創建WCF服務客戶端,而不指定配置名稱

[英]Create WCF service client with specified address without specifying configuration name

有沒有辦法在C#中使用指定的端點地址創建WCF服務客戶端的實例而不指定配置名稱?

默認情況下,客戶端具有以下構造函數:

    public ServiceClient() 
    public ServiceClient(string endpointConfigurationName)
    public ServiceClient(string endpointConfigurationName, string remoteAddress)

顯然,由於第一個構造函數,有一個默認配置。 我想要的是只指定最終構造函數的第二個參數。 現在,我正在努力閱讀使用ConfigurationManager來解決它的配置元素,但它看起來非常麻煩。 有更干凈的方式嗎?

我不想在.config文件中使用端點配置。 我通常做這樣的事情:

        BasicHttpBinding basicbinding = new BasicHttpBinding();
        basicbinding.SendTimeout = TIMEOUT;
        basicbinding.OpenTimeout = TIMEOUT;
        ServiceClient client = new ServiceClient(basicbinding, new EndpointAddress(new Uri("http://xxxxx")));

您生成的客戶端也應該有一個如下所示的構造函數:

public ServiceClient(
    System.ServiceModel.Channels.Binding binding,
    System.ServiceModel.EndpointAddress remoteAddress)
        : base(binding, remoteAddress) {
    }

您可以在沒有端點配置的情況下調用此方法。

如果你想要實際上只是想要調用服務而不必了解有關WCF服務和配置處理的所有信息,那么在C#中你可以做...

        String url = "http:\\somehost:someport\\pathToSomeService";

        EndpointAddress address = new EndpointAddress(url);
        Binding binding = new BasicHttpBinding();

        YourClient client = new YourClient(binding, address);

        // Call your client methods
        client.SomeMethod(parm1, parm2);

以上假設您生成了服務引用,並且不要求配置信息存在於任何位置,不存在於生成的服務引用中,不存在於DLL中,也不存在於可執行文件中。 沒有配置。 沒有。

我在一個真正的獨立服務代理DLL中使用上面的代碼。 它是最獨立的,因為它完全可配置,不依賴於調用可執行文件來提供任何東西。

好吧,您可以使用默認構造函數,但是您必須在所有配置設置中手動編程。 通過指定配置名稱,服務客戶端將自動從.config文件加載配置,您需要知道的是要使用的配置(您可以有多個,例如一個用於HTTP而另一個用於Net.Tcp)。 當然,remoteAddress只是告訴WCF在哪里建立連接。

如果您自己配置客戶端設置時遇到問題,請確保使用WCF服務配置工具。 它適用於服務配置和客戶端配置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM