首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Castle Windsor注册wcf服务

使用Castle Windsor注册wcf服务
EN

Stack Overflow用户
提问于 2012-05-01 19:51:37
回答 1查看 2K关注 0票数 0

我有一个非常简单的服务,在不使用Castle时工作得很好(这表明其他代码是正确的)。我将svc文件更改为以下内容:

代码语言:javascript
复制
<%@ ServiceHost Service="Reporting.WebService.ReportingWebService" Factory="Castle.Facilities.WcfIntegration.DefaultServiceHostFactory, Castle.Facilities.WcfIntegration"  %>

并使用xml注册服务,如下所示:

代码语言:javascript
复制
  <component id="Reporting.WebService.ReportingWebService"
           service="Reporting.WebService.IReportingWebService, Reporting.WebService"
           type="Reporting.WebService.ReportingWebService, Reporting.WebService">
</component>

但是我得到了以下错误:

代码语言:javascript
复制
[InvalidOperationException: Could not find a component with name Reporting.WebService.ReportingWebService, did you forget to register it?]   Castle.Facilities.WcfIntegration.WindsorServiceHostFactory`1.CreateServiceHost(String constructorString, Uri[] baseAddresses)
....

你知道为什么它没有注册吗?

--更新

我在windsor配置中有这个:

代码语言:javascript
复制
<facilities>
    <facility id='wcf'
          type='Castle.Facilities.WcfIntegration.WcfFacility,
                Castle.Facilities.WcfIntegration' />
</facilities>

而ReportingWebService则在另一个程序集中实现。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-01 21:27:41

我看不到任何问题,这导致我认为要么它找不到你的程序集,要么可能类型还没有被加载。因为您的webservice在另一个程序集中被引用,所以请确保它在web项目中被引用。或者,切换到在Global.asax中使用代码,这将强制您引用程序集并加载类型:

代码语言:javascript
复制
var container = new WindsorContainer();
container.AddFacility<WcfFacility>()
         .Register(Component.For<IReportingWebService>().ImplementedBy<ReportingWebService>());

//Additional wire up

//If you are using Windsor 3.0 and above then the following is not needed
DefaultServiceHostFactory.RegisterContainer(container.Kernel);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10397253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档