如何在Orchard中使用WCF服务

时间:2015-05-11 19:30:18

标签: wcf orchardcms

我正在尝试在模块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. 我一直收到以下错误。
  3.   

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

    请帮忙。

1 个答案:

答案 0 :(得分: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?