如何在 Orchard 中使用 WCF 服务

How to consume WCF Service in Orchard

我正在尝试在模块 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. 我似乎无法访问我的模块中的 Web 配置设置
  2. 我不断收到以下错误。

Could not find default endpoint element that references contract 'TwitterService.ITwitterService' in the ServiceModel client configuration section. This might be because no configuration file was found for your application, or because no endpoint element matching this contract could be found in the client element.

请帮忙。

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

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

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

然后在代码中做类似

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

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

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