![](/img/trans.png)
[英]WCF Error - Could not find default endpoint element that references contract
[英]WCF Endpoint Error: Could not find default endpoint element
所以這是我的問題。 我有一個在服務中使用的客戶端,當我使用 Visual Studio 中的內置測試主機測試所述服務時,所有服務合同都可用。 但是,當我嘗試測試其中一個服務合同時,Visual Studio 會出現以下錯誤
在 ServiceModel 客戶端配置部分中找不到引用合同“TestServiceReference.ITestService”的默認端點元素。 這可能是因為找不到您的應用程序的配置文件,或者因為在客戶端元素中找不到與此協定匹配的端點元素。
現在,我知道直接而明顯的答案是檢查我的配置以確保我的端點是正確的,但就是這樣,它是正確的。 我檢查了實現客戶端的服務的 web.config 和客戶端的 app.config。 兩個端點都是正確的(至少我認為它們是)。
這是 web.config 端點:
<endpoint address="http://testServiceRepo/TestServices/TestService.svc"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_ITestService"
contract="TestServiceReference.ITestService"
name="BasicHttpBinding_ITestService" />
這是 app.config 端點:
<endpoint address="http://testServiceRepo/TestServices/TestService.svc"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_ITestService"
contract="TestServiceReference.ITestService"
name="BasicHttpBinding_ITestService" />
端點完全相同,它們都引用 TestServiceReference.ITestService。 所以,我在這里不知所措。 大家有什么建議?
謝謝你的幫助!
如果您在類庫中調用服務並從另一個項目調用類庫,則可能會出現此錯誤。 在這種情況下,您需要將 WS 配置設置包含到主項目 app.config(如果它是一個 winapp)或 web.config(如果它是一個 Web 應用程序)。 你是如何測試的? 您是否嘗試使用 svcutil 創建客戶端代理/類,然后測試這些方法。 它還在輸出中生成需要配置,您可以使用配置文件。
嘗試這樣的設置:
客戶端配置:
<basicHttpBinding>
<binding name="BasicHttpBinding_ITestService" />
</basicHttpBinding>
<client>
<endpoint
address="http://testServiceRepo/TestServices/TestService.svc"
binding="basicHttpBinding"
bindingConfiguration="BasicHttpBinding_ITestService"
contract="TestServiceReference.ITestService"
name="BasicHttpBinding_ITestService" />
</client>
服務器配置:
<basicHttpBinding>
<binding name="BasicHttpBinding_ITestService" />
</basicHttpBinding>
<behaviors>
<serviceBehaviors>
<behavior name="testBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service behaviorConfiguration="testBehavior" name="TestServiceReference.TestService">
<endpoint
address=""
binding="basicHttpBinding"
bindingConfiguration="BasicHttpBinding_ITestService"
contract="TestServiceReference.ITestService"
name="BasicHttpBinding_ITestService" />
</service>
</services>
編輯
注意:實際上,如果您使用服務引用(生成的代理),只需修復服務的設置,刪除客戶端中<system.serviceModel>
標記的內容,並添加/更新您的服務引用。 它將在客戶端的配置文件中修復您的設置。
對我來說,當我不小心將 WCF 端點“修復”為
<client>
<endpoint
address="http://testServiceRepo/TestServices/Testservice.svc"
binding="basicHttpBinding"
bindingConfiguration="BasicHttpBinding_ITestService"
contract="TestServiceReference.ITestService"
name="BasicHttpBinding_ITestService" />
</client>
代替
<client>
<endpoint
address="http://testServiceRepo/TestServices/TestService.svc"
binding="basicHttpBinding"
bindingConfiguration="BasicHttpBinding_ITestService"
contract="TestServiceReference.ITestService"
name="BasicHttpBinding_ITestService" />
</client>
(注意TestService首地址示例中的小寫's')
這是針對 ac# 項目的
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.