【问题标题】:Cannot connect to my WCF service right out of the box无法立即连接到我的 WCF 服务
【发布时间】:2011-01-21 15:35:27
【问题描述】:

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

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

【问题讨论】:

    标签: wcf wcf-binding wcf-client


    【解决方案1】:

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

    【讨论】:

    • 是的,该服务托管在 IIS 中,当我在测试项目之外调用它时它实际上为我运行(我有一个 Windows 服务通过 http 调用它作为解决方案的不同部分)。这是我的 appconfig 中的另一行:“
    • 如果你真的不需要配置,你可以用代码来做。 webService = new ServiceReference2.EdiServiceClient(new BasicHttpBinding(), new EndpointAddress("mike-laptop/kbs/FFEDI/Service.svc"));
    • 这很有帮助;我实际上想知道如何仅出于故障排除目的而这样做。我讨厌所有这些黑匣子的东西,太难追踪到底发生了什么。
    【解决方案2】:

    对我来说,乍一看还不错...一些需要检查/思考/验证的想法:

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

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

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

    这有什么改变吗?

    【讨论】:

    • 指定端点名称似乎并没有改变任何东西,只是稍微长一点的错误消息。我对测试运行程序没有读取 app.config 有同样的想法。当我进行构建时,我没有在 bin\debug 目录中看到任何类型的新配置文件。这很好奇;我得调查一下。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多