使用ASP.NET MVC3中的Windsor(3.2.0.0)WcfFacility时解析服务时出错

时间:2013-02-28 14:53:58

标签: wcf dependency-injection castle-windsor wcffacility

仍然使用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

似乎工具忽略了我给它的端点名称?

或者(更有可能)我没有正确注册我的服务,并且设施正在使用一些命名回退。

修改

我的端点名称属性似乎是“服务”!在我尝试的每个测试中,如果属性是任何其他值,我总是会得到相同的错误 - 这是一个错误吗?

干杯

1 个答案:

答案 0 :(得分:0)

好的 - 我已经设法解决了这个问题。

我写了一个简单的测试工具,一个MVC和一个WCF并使用WcfFacility没有问题 - 这让我相信它确实有用; o)。

我正在使用现有的代码库并重构以使用WcfFacility,因此我将原始更改分类并重新启动。这一次,我没有遇到任何问题。

我怀疑我一定错过了<system.serviceModel>元素中的web.config中的一些重复 - 尽管我发誓它没关系!

干杯