开箱即用无法连接到我的WCF服务

时间:2010-02-26 21:44:37

标签: wcf wcf-binding wcf-client

我正在尝试在单元测试中使用的服务。在这一点上,我只是想实例化这件事。在遭遇“无法找到引用合同的默认端点元素”错误数小时且无法弄清楚之后,我完全删除了消费者并从头开始。我所做的只是为我的测试项目添加一个服务引用,指向我的服务,点击“GO”就是这样。仍然无法正常工作。我没有碰到一行代码,但是在我让VS构建之后它就无法正常工作。

以下是我的app.config中测试项目的相关行:

<client>
    <endpoint address="http://mike-laptop/kbs/FFEDI/Service.svc"
       binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IEdiService"
       contract="ServiceReference2.IEdiService" name="BasicHttpBinding_IEdiService" />
</client>

在我的单元测试中,这是我的方法:

public void CreateWebServiceInstance()
{
    ServiceReference2.EdiServiceClient webService = new ServiceReference2.EdiServiceClient();
    string svcAddress = webService.Endpoint.Address.ToString();
    Console.WriteLine("Address is: " + svcAddress);
    Assert.IsTrue(svcAddress.Equals("http://mike-laptop/kbs/FFEDI/Service.svc"));  // test
}

我得到的错误是:

  

System.InvalidOperationException:   找不到默认端点   引用合同的元素   'ServiceReference2.IEdiService'中   ServiceModel客户端配置   部分。这可能是因为没有   找到了您的配置文件   应用程序,或因为没有端点   匹配此合同的元素可以   可以在客户端元素中找到。

同样,这次我没有改变任何事情。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

服务是否在IIS中托管?你能在浏览器中点击它吗?你的配置中有&lt; binding name =“BasicHttpBinding_IEdiService”&gt; ...吗?您是否尝试将绑定配置名称传递给构造函数?

答案 1 :(得分:0)

初看起来对我来说很好......有些想法需要检查/思考/验证:

  • 您的测试项目的app.config是否完全被读取?例如。它被解释了吗? bin \ debug目录中是否有TestProject.exe.config?我想也许测试跑步者可能会玩一些技巧而不是阅读配置。

  • 或者如果在创建服务客户端时指定客户端端点的名称会发生​​什么?

    ServiceReference2.EdiServiceClient webService = 
        new ServiceReference2.EdiServiceClient("BasicHttpBinding_IEdiService");
    

这会改变什么吗?