我正在尝试在单元测试中使用的服务。在这一点上,我只是想实例化这件事。在遭遇“无法找到引用合同的默认端点元素”错误数小时且无法弄清楚之后,我完全删除了消费者并从头开始。我所做的只是为我的测试项目添加一个服务引用,指向我的服务,点击“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客户端配置 部分。这可能是因为没有 找到了您的配置文件 应用程序,或因为没有端点 匹配此合同的元素可以 可以在客户端元素中找到。
同样,这次我没有改变任何事情。有什么想法吗?
答案 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");
这会改变什么吗?