![](/img/trans.png)
[英]WCF Client Application not updating service reference after making changes in app.config
[英]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.