我在尝试从 ac# 客户端访问 iis(本地)托管的 WCF 服务时收到此错误:
在 ServiceModel 客户端配置部分中找不到名称为“X”和合同“合同名称”的端点元素。这可能是因为没有为您的应用程序找到配置文件,或者因为在客户端元素中找不到与此名称匹配的端点元素。
这是客户端的 app.config(它是一个 NUnit 夹具,只是为了测试连接):
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_MyWs" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
hostNameComparisonMode="StrongWildcard"
maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="Transport">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="https://localhost/MyWs/MyWs.svc"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_MyWs"
contract="MyServiceSvc.IMyWs"
name="BasicHttpBinding_MyWs" />
</client>
</system.serviceModel>
</configuration>
如果我浏览
https://localhost/MyWs/MyWs.svc?wsdl
我得到正确的输出,所以服务器部分工作正常。
此外,我可以使用soapUI 测试我的ws,所以问题一定出在客户端,可能在app.config 中。
我的客户端代码,以防万一有人想看它:
[TestFixture]
public class MyWsProxyFixture
{
private readonly MyWsClient _client = new MyWsClient();
[Test]
public void ProxyCreation()
{
Assert.IsNotNull(_client);
}
//More tests here
}
更有趣的是,完全相同的配置和客户端在另一台机器上工作。是的,它是真实的。我自己都不敢相信,但事实就是如此。
你能给出一些提示或建议来解决这个问题吗?
谢谢!
PS:客户端中的服务参考很好。