簡體   English   中英

WCF 端點錯誤:找不到默認端點元素

[英]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.

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