我正在尝试在模块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
内的。我注意到的是
无法在ServiceModel客户端配置部分中找到引用合同“TwitterService.ITwitterService”的默认端点元素。这可能是因为没有为您的应用程序找到配置文件,或者因为在客户端元素中找不到与此合同匹配的端点元素。
请帮忙。
答案 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?)