0

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

<%@ ServiceHost Service="Reporting.WebService.ReportingWebService" Factory="Castle.Facilities.WcfIntegration.DefaultServiceHostFactory, Castle.Facilities.WcfIntegration"  %>

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

  <component id="Reporting.WebService.ReportingWebService"
           service="Reporting.WebService.IReportingWebService, Reporting.WebService"
           type="Reporting.WebService.ReportingWebService, Reporting.WebService">
</component>

但我收到以下错误:

[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)
....

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

- - 更新 - -

我在温莎配置中有这个:

<facilities>
    <facility id='wcf'
          type='Castle.Facilities.WcfIntegration.WcfFacility,
                Castle.Facilities.WcfIntegration' />
</facilities>

并且 ReportingWebService 在另一个程序集中被隐含。

4

1 回答 1

2

我看不出电线有什么问题,这导致我认为它要么找不到你的程序集,要么可能没有加载类型。因为您的 Web 服务在另一个程序集中被引用,请确保它在 Web 项目中被引用。或者切换到在代码中的 Global.asax 中进行连接,这将强制您引用程序集并加载类型:

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);
于 2012-05-01T13:27:41.197 回答