WCF端点错误:找不到默认端点元素

时间:2015-07-27 19:40:36

标签: c# .net wcf wcf-endpoint

所以这是我的问题。我有一个在服务中使用的客户端,当我使用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。所以,我在这里不知所措。你们会建议什么?

感谢您的帮助!

3 个答案:

答案 0 :(得分:13)

如果您在类库中调用服务并从另一个项目调用类库,则会出现此错误。在这种情况下,如果是winapp,则需要将WS配置设置包含到主项目app.config中,如果是web应用,则需要包含web.config。你是如何测试它的?您是否尝试使用svcutil创建客户端代理/类,然后测试这些方法。它还会在输出中生成require配置,您可以使用配置文件。

答案 1 :(得分:0)

尝试这样的设置:

客户端配置:

        <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>标记的内容,以及添加/更新服务引用。它将修复客户端配置文件中的设置。

答案 2 :(得分:0)

对我来说,这个确切的问题是在我不小心将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)

这是一个c#项目