2

我正在尝试让 Castle Windsor 使用 WcfFacility 创建我的 WCF。我按照本教程进行操作。http://www.codeproject.com/Articles/426770/Dependency-Injection-in-WCF-using-Castle-Windsor但它似乎对我不起作用。我收到以下错误。

找不到名称为 ActionService.ServiceImplementations.ActionWebService 的组件,您忘记注册了吗?

我的应用程序的结构方式如下。

一个 web 服务项目(只有 svc 文件,没有代码,web.config 和 global.asax)

合同和实施的第二个项目。这是 IActionWebService 和 ActionWebservice 所在的位置。

我有后者的参考到第一个。

这是我的全球 asax。

public class Global : System.Web.HttpApplication
{
    IWindsorContainer container;
    protected void Application_Start(object sender, EventArgs e)
    {
        container = new WindsorContainer();

        container.AddFacility<WcfFacility>()
            .Register(
            Component.For<IAuthService>().ImplementedBy<AuthService>(),
            Component.For<IUserRepository>().ImplementedBy<UserRepository>(),
            Component.For<IActionWebService>().ImplementedBy<ActionWebService>().Named("ActionWebService")
            );
    }

这是我的 svc 文件。

    <%@ ServiceHost 
Language="C#" 
Debug="true" 
Service="ActionService.ServiceImplementations.ActionWebService"
Factory="Castle.Facilities.WcfIntegration.DefaultServiceHostFactory, Castle.Facilities.WcfIntegration" %>

我已经在这里和其他博客中解决了其他问题,但他们的解决方案对我没有任何帮助:(。

任何人都可以指出错误可能发生在哪里?

编辑我附加了一个监视窗口捕获。在那里您可以看到所有对象似乎都已加载。但这并不能解决它们。

在这里,您可以看到实际对象已加载到容器中。 它只是不能解决它们

4

2 回答 2

1

我有同样的错误

为了在注册的字符串参数中解决它,我把它放在完整的命名空间中,就像这样。

protected void Application_Start(object sender, EventArgs e)
    {
        IWindsorContainer container = new WindsorContainer();

        container.AddFacility<WcfFacility>().Register(
          Component.For<IActivityLogsRepository>().ImplementedBy<ActivityLogsRepository>(),
            Component.For<IActivityLogsService>().ImplementedBy<ActivityLogsService>()
                .Named("Company.ServiceImplementation.ActivityLogsService"),

我希望这可以帮助你

于 2013-02-13T18:15:35.027 回答
1

我遇到了同样的问题,这是因为我们项目的输出 dll 名称已更改,而 svc 文件标记代码仍引用旧的 dll 名称:

<%@ ServiceHost Language="C#" Debug="true" Service="[Namespace.ClassName],[DllName]" Factory="Castle.Facilities.WcfIntegration.DefaultServiceHostFactory, Castle.Facilities.WcfIntegration" %>
于 2018-08-22T19:18:58.380 回答