无法从客户端连接到WCF服务

时间:2013-03-07 11:13:06

标签: c# wcf web-services

我在尝试从c#客户端访问iis(本地)托管的WCF服务时收到此错误:

  

无法找到名称为“X”且合同“合同”的端点元素   在ServiceModel客户端配置部分中命名。这可能是   因为没有找到您的应用程序的配置文件,或   因为在。中找不到与此名称匹配的端点元素   客户元素。

这是客户端的app.config(它是一个NUnit fixture只是为了测试连接):

<?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:客户端的服务引用很好。

2 个答案:

答案 0 :(得分:1)

据我所知,它可能是一个多项目配置问题:

如果您的解决方案中有多个项目,那么您必须将该配置文件放在特定项目的配置中消费wcf服务。

假设您有2个项目,那么将有2个相应的配置文件。

答案 1 :(得分:0)

根本没有问题出现在App.config中 实际上,同样的App.config在另一台机器上工作正常 问题在于Nunit。默认情况下,它使用“卷影复制”设置复制临时文件夹中的所有dll并从那里执行二进制文件。我不能理解为什么它复制dll而不是.config。这没有意义!
在我将阴影副本设置为false后,它也开始在我的机器上工作。

PS:客户端在其他机器上运行,因为环境在Resharper下运行,Resharper默认关闭卷影副本。
现在有道理!

希望这有助于有同样愚蠢问题的人