我有一个非常简单的服务,在不使用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)
....你知道为什么它没有注册吗?
--更新
我在windsor配置中有这个:
<facilities>
<facility id='wcf'
type='Castle.Facilities.WcfIntegration.WcfFacility,
Castle.Facilities.WcfIntegration' />
</facilities>而ReportingWebService则在另一个程序集中实现。
发布于 2012-05-01 21:27:41
我看不到任何问题,这导致我认为要么它找不到你的程序集,要么可能类型还没有被加载。因为您的webservice在另一个程序集中被引用,所以请确保它在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);https://stackoverflow.com/questions/10397253
复制相似问题