【问题标题】:Could not find endpoint element with name ' and contract 'I' in the ServiceModel client configuration section.在 ServiceModel 客户端配置部分中找不到名称为 ' 和合同 'I' 的端点元素。
【发布时间】:2012-03-11 18:46:10
【问题描述】:

我正在研究基础 WCF 服务 - 客户端 WCF 服务 - 消费者基础 Wcf 服务模型,如下所示:

在这个模型中,我创建了一个 Base WCF 服务并创建了 1 个 WCF 服务,即; ClientWCFService 和 1 个 ASMX 服务,即; ClientASMXservice 使用 BaseWCFServiceProxy.cs Base WCF Service 的 Proxy 类使用 SVCUtil.exe。

ClientWCFService 和 ClientASMXservice 在 StandAlone 环境中运行良好。 现在,我使用相同的代理类 BaseWCFServiceProxy.cs 创建了一个消费者控制台应用程序,以使用 BaseWcfService 类访问 ClientWCFService 和 ClientASMXservice。

根据OOP 规则,BaseWcfService 类是 ClientWCFService 和 ClientASMXservice 的基类,我可以使用 Base 服务类构造函数访问这些服务。

服务调用如下: 对于 ClientWCFService

 ModelWcfServiceContractClient _client = new ModelWcfServiceContractClient("IModelWcfServiceContract","http://localhost:64242/ClientWCFServiceWcfUsingSVCProxy.svc");

对于客户端ASMX服务

ModelWcfServiceContractClient _client = new ModelWcfServiceContractClient("IModelWcfServiceContract","http://localhost:64396/ClientASMXServiceWcfUsingSVCProxy.asmx");

Consumer Console 应用程序构建良好,但在运行时初始化 ModelWCFServiceContractClient 对象时, 它抛出 InvalidOperation Exception 为:

找不到名为“IModelWcfServiceContract”的端点元素 并在 ServiceModel 客户端中签订合同“IModelWcfServiceContract” 配置部分。这可能是因为没有配置文件 为您的应用程序找到,或者因为没有匹配的端点元素 此名称可以在客户端元素中找到。

我已尝试为每种类型的服务使用不同的端点来解决此问题,但未能成功。

我们将不胜感激。另外请不要仅仅通过清除拼写错误来帮助我,因为这会浪费我的时间来阅读由于清除拼写错误而产生的警报。时间对我来说很重要..

谢谢

【问题讨论】:

  • 您可以为客户端发布 web.config system.servicemodel 部分吗?
  • @dtyron 我认为 OP 试图避免使用配置文件。
  • ModelWcfServiceContractClient 生成了吗?可以提供这个类里面的连接代码吗?
  • @dtryon,ModelWcfServiceContractClient 是使用 SVCUtil.exe 工具为 ModelWcfService WCF 服务生成的代理类。我在消费者应用程序中使用这个类来访问两个子集服务(ClientASMX 和 ClientWCf),方法是在 ModelWcfServiceContractClient 构造函数中提供服务的合同名称和 URI。
  • 好的,您在生成的输出中看到 .svcmap(或 Reference.cs)文件了吗?

标签: wcf client wcf-binding wcf-endpoint servicecontract


【解决方案1】:

试试这个(希望你能关注):

在 Visual Studio 中,选择包含 ModelWcfProxy 的 ServiceReference 的项目(生成 ModelWcfServiceContractClient 代理类的项目)。

从解决方案资源管理器菜单栏中选择“显示所有文件”。

展开服务引用文件夹和生成的服务引用。找到 .svcmap 文件,在下面查找 Reference.cs 文件。

在您生成的界面顶部应该定义了一个System.ServiceModel.ServiceContractAttribute。在属性构造函数中,您应该看到正在设置的 ConfigurationName 属性。此合约配置名称应与 config 中定义的名称或您发送到您的方法的名称匹配:

ModelWcfServiceContractClient _client = new ModelWcfServiceContractClient("IModelWcfServiceContract","http://localhost:64242/ClientWCFServiceWcfUsingSVCProxy.svc");

希望这会有所帮助。

【讨论】:

  • @Dtryon.. 我没有在我的项目中创建任何服务引用。当您使用 Web 服务或 WCF 服务的代理类时,无需创建服务引用。这完全是关于在运行时 Web 服务与其使用者之间的动态绑定。谢谢您的回复
  • 抱歉,误会了,请参阅对您原来问题的评论。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-13
  • 2013-11-08
  • 2014-10-11
  • 2011-11-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多