WCF服务作为一个单独的库 - 与Ninject的DI

时间:2013-12-31 08:49:29

标签: c# wcf dependency-injection ninject inversion-of-control

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

  • MyWCFService
    • App_Start
      • NinjectWebCommon.cs
    • 的web.config
  • Friends.Implementation
    • Friends.svc
      • Friends.svc.cs
  • Friends.Contract
    • IFriends.cs
  • DAL.Implementation
    • Blebleble.cs
  • DAL.Contract
    • IBlebleble.cs

我的Friends.Implementation库中的WCF服务出现问题。

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

但是当我将Friends服务移到单独的库中时,我收到此错误:

  

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

为什么我会收到错误?如何解决?

这是我的服务代码:

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

.CS文件

    public IAccountService accountService { get; set; }
    public IFriendsService friendsService { get; set; }

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

问候。

1 个答案:

答案 0 :(得分:0)

对于单独库中的服务,您应该从CodeBehind="Friends.svc.cs"删除ServiceHost属性,Service属性应与服务实现的完全限定程序集名称匹配