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 に答える