所以这是我的问题。我有一个在服务中使用的客户端,当我使用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。所以,我在这里不知所措。你们会建议什么?
感谢您的帮助!
答案 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#项目