【问题标题】:How to consume WCF Service in Orchard如何在 Orchard 中使用 WCF 服务
【发布时间】:2015-07-22 10:54:52
【问题描述】:

我正在尝试在模块 web 配置中使用我的模块中的服务,我添加了我的服务配置,如下所示。

<system.serviceModel>
<bindings>
  <basicHttpBinding>
    <binding name="WSEventSoap" />
    <binding name="BasicHttpBinding_ITwitterService" />
    <binding name="BasicHttpBinding_ILoyalty">
      <security mode="Transport" />
    </binding>
  </basicHttpBinding>
</bindings>
<client>
    <endpoint name="BasicHttpBinding_ITwitterService"
        address="wwww.mysite.com/MediaServices/TwitterService.svc"   
        binding="basicHttpBinding" 
        bindingConfiguration="BasicHttpBinding_ITwitterService"  
        contract="TwitterService.ITwitterService" />
</client>
</system.serviceModel>

在模块web.config 内。我注意到的是

  1. 我似乎无法访问我的模块中的网络配置设置
  2. 我不断收到以下错误。

在 ServiceModel 客户端配置部分中找不到引用合同“TwitterService.ITwitterService”的默认端点元素。这可能是因为找不到您的应用程序的配置文件,或者因为在客户端元素中找不到与此协定匹配的端点元素。

请帮忙。

【问题讨论】:

  • 将其添加到 Orchard.Web web.config
  • 嗯,模块的 web.config 不会有帮助,全局 web.config 是一个公共资源,所以不应该使用,因为它会阻止你的模块移植到另一个实例Orchard 也无需修改其 web.config。我看到的唯一干净的解决方案是在没有这个绑定业务的情况下查询服务。毕竟,Web 服务只是使用 http。

标签: wcf orchardcms


【解决方案1】:

在我目前正在开发的网站上,就像 Betrand 建议的那样,我们避免修改全局 web.config 以确保模块在项目之间是可移植的。

相反,我们只是在代码中创建了 Binding 和 Endpoint,而不是从配置中提取它们。我们将自己的设置添加到 Orchard 站点设置中,让用户通过管理仪表板指定端点地址,这是我们真正需要配置的唯一部分。

为此,请在模块中正常添加服务引用,如果将这些部分添加到您的模块 web.config 中,请删除它们,因为您不会使用它们。

然后在代码中做类似的事情

Binding binding = new BasicHttpBinding();
EndpointAddress address = new EndpointAddress("http://localhost:8050/MyService/");

using (var client = new MyServiceClient(binding, endpointAddress))
{
    client.MyMethod();
}

在 Stackoverflow 和其他地方有很多这样的例子(例如WCF: How can I programatically recreate these App.config values?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-08
    • 2015-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-13
    相关资源
    最近更新 更多