Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WCF服务作为一个独立的库-DI与Ninject_C#_Wcf_Dependency Injection_Ninject_Inversion Of Control - Fatal编程技术网

C# WCF服务作为一个独立的库-DI与Ninject

C# WCF服务作为一个独立的库-DI与Ninject,c#,wcf,dependency-injection,ninject,inversion-of-control,C#,Wcf,Dependency Injection,Ninject,Inversion Of Control,这是我的项目图(快捷方式)。我正在使用Ninject解决我的解决方案中的DI MyWCF服务 应用程序启动 NinjectWebCommon.cs web.config 朋友们,执行 Friends.svc Friends.svc.cs 朋友,合同 IFriends.cs D.执行 bleble.cs D.合同 IBlebleble.cs 我在Friends.Implementation库中的WCF服务有问题 当我在MyWCFService中有Friends.sv

这是我的项目图(快捷方式)。我正在使用Ninject解决我的解决方案中的DI

  • MyWCF服务
    • 应用程序启动
      • NinjectWebCommon.cs
    • web.config
  • 朋友们,执行
    • Friends.svc
      • Friends.svc.cs
  • 朋友,合同
    • IFriends.cs
  • D.执行
    • bleble.cs
  • D.合同
    • IBlebleble.cs
我在
Friends.Implementation
库中的WCF服务有问题

当我在
MyWCFService
中有Friends.svc和Friends.svc.cs文件时,一切都正常(DI和Ninject工作)

但当我将好友服务移动到单独的库中时,会出现以下错误:

无法将提供的服务类型作为服务加载,因为它 没有默认(无参数)构造函数。修理 问题,请向类型添加默认构造函数,或传递的实例 将该类型复制到主机

为什么我会犯这样的错误?如何解决

这是我的服务代码:

<%@ ServiceHost Language="C#" Debug="true" Service="XYZ.Services.Friends" CodeBehind="Friends.svc.cs" Factory="Ninject.Extensions.Wcf.NinjectServiceHostFactory" %>

关于。

对于单独库中的服务,您应该从
ServiceHost
中删除
codebeahind=“Friends.svc.cs”
属性,并且
服务
属性应该与您的服务实现类型的完全限定程序集名称匹配

这不是解决方案。对于相同的服务,没有IoC和构造器,一切正常。
    public IAccountService accountService { get; set; }
    public IFriendsService friendsService { get; set; }

    public Friends(IAccountService _acc, IFriendsService _friends)
    {
        this.accountService = _acc;
        this.friendsService = _friends;
    }