仍然使用Castle.Windsor和WcfFacility找到我的方式,但这些让我头疼。我希望Windsor注入WCF客户端,它在我的存储库中看到了依赖。
我在Visual Studio中添加了一个服务引用,并将以下内容添加到我的引导代码中:
container.AddFacility<WcfFacility>();
container.Register(
Component.For<IServiceContract>()
.AsWcfClient(
DefaultClientModel.On(
WcfEndpoint.FromConfiguration("MyEndpoint")
)
)
);
我的web.config包含一个<client>
部分,其端点名称相应:
<client>
<endpoint address="http://localhost:63988/MyService.svc"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IServiceContract"
contract="IServiceContract"
name="MyEndpoint" />
</client>
当我运行我的应用程序时,我得到了一个YSOD:
无法找到名称为“service”和contract的端点元素 'IServiceContract'中 ServiceModel客户端配置部分。这可能是因为 找不到您的应用程序的配置文件,或者没有找到 匹配此名称的端点元素可以在客户端中找到 元件。
非常自我解释,但为什么要查找名称为“ service ”的元素,我的元素名为“ MyEndpoint ”,我已将其正确传递给{ {1}}方法?
如果我更新我的web.config以将名称属性从“MyEndpoint”更改为“service” - YSOD消失了,我的页面也能正常工作!
FromConfiguration
似乎工具忽略了我给它的端点名称?
或者(更有可能)我没有正确注册我的服务,并且设施正在使用一些命名回退。
修改
我的端点名称属性似乎是“服务”!在我尝试的每个测试中,如果属性是任何其他值,我总是会得到相同的错误 - 这是一个错误吗?
干杯
答案 0 :(得分:0)
好的 - 我已经设法解决了这个问题。
我写了一个简单的测试工具,一个MVC和一个WCF并使用WcfFacility没有问题 - 这让我相信它确实有用; o)。
我正在使用现有的代码库并重构以使用WcfFacility,因此我将原始更改分类并重新启动。这一次,我没有遇到任何问题。
我怀疑我一定错过了<system.serviceModel>
元素中的web.config中的一些重复 - 尽管我发誓它没关系!
干杯