簡體   English   中英

wsHttpBinding 更改為客戶端 app.config 中的 basicHttpBinding

[英]wsHttpBinding changes to basicHttpBinding in client app.config

在 WCF 服務中,我將端點綁定設置為 wsHttpBinding。 但是,當我使用 Visual Studio 添加服務引用時,我的客戶端 app.config 將綁定顯示為 basicHttpBinding。 有誰知道為什么會這樣?

我在服務 web.config 中的端點(托管在 IIS 7.5 中)。 從 baseAddresses 獲取地址

<endpoint address=""
    binding="wsHttpBinding"
    bindingConfiguration="wsHttpServiceBinding"
    contract="MyProject.IMyService" />

客戶端應用程序配置:

<client>
    <endpoint address="http://example.com/MyService.svc"
    binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_MyService"
    contract="Service.MyService" name="BasicHttpBinding_MyService" />
</client>

- Ladislav Mrnka用正確的方向指出了我。 非常感謝。

我試圖讓問題變得簡單,因為我認為答案可能是直截了當的。 但是我應該更詳細地解釋一下我的設置,因為這是我的問題的答案所在。

我沒有讓我的服務合同(IMyService)駐留在我的WCF服務應用程序中,而是在另一個Domain項目中使用它,我保留了所有接口,以便它們可以在許多不同的項目中重用。 在我的WCF服務應用程序.web.config中,我的服務名稱指向接口項目而不是實現。 這導致VS2010(svcutil.exe)基於默認設置創建代理和配置(我假設駐留在machine.config(對於WCF 4))。

因此,對於可能遇到此問題的任何其他人進行總結時,服務名稱指向錯誤的位置。 確保服務名稱指向實現(通常在WCF服務應用程序 - MyProject.MyService中),並且端點協定指向服務合同(在WCF服務應用程序或外部項目中 - MyProject.IMyService或AnotherProject.Interfaces.IMyService )。

感謝你的幫助。

就我而言,我對 App.config 進行了以下更改

<service behaviorConfiguration="Throttled"  name="Registrar.Services.RegistrarPaperService">
                <endpoint address="" binding="wsHttpBinding" bindingConfiguration="PapersBinding"
                    contract="Registrar.Services.IRegistrarPaperService" />
                <endpoint address="mex" binding="wsHttpBinding" contract="IMetadataExchange" />
            </service>

在服務的名稱屬性中,我給出了完整的命名空間和 class 名稱,其中我有服務實現,在合同中,我有完整的名稱空間和接口名稱。

我的服務實現命名空間是這個Registrar.Services.RegistrarPaperService我的接口Registrar.Services.IRegistrarPaperService

如果你把服務和它的接口放在同一個命名空間中,它會解決很多問題。

暫無
暫無

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

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