2

我有一项我试图在单元测试中使用的服务。在这一点上,我只是想实例化这个东西。在遭受“无法找到引用合同的默认端点元素”错误数小时且无法弄清楚之后,我完全删除了消费者并从头开始。我所做的只是在我的测试项目中添加一个服务引用,将它指向我的服务,点击“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:在 ServiceModel 客户端配置部分中找不到引用合同“ServiceReference2.IEdiService”的默认端点元素。这可能是因为没有为您的应用程序找到配置文件,或者因为在客户端元素中找不到与此协定匹配的端点元素。

再说一次,这次我什么都没改变。有任何想法吗?

4

2 回答 2

0

该服务是否托管在 IIS 中?你可以在浏览器中点击它吗?您的配置中有 <binding name="BasicHttpBinding_IEdiService">... 吗?您是否尝试将绑定配置名称传递给构造函数?

于 2010-02-26T21:59:21.877 回答
0

对我来说,乍一看似乎很好......一些需要检查/思考/验证的想法:

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

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

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

这有什么改变吗?

于 2010-02-26T22:01:16.083 回答