【问题标题】:WCF Service as a separate library - DI with NinjectWCF 服务作为一个单独的库 - DI 与 Ninject
【发布时间】:2014-01-18 05:17:36
【问题描述】:

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

  • MyWCF 服务
    • App_Start
      • NinjectWebCommon.cs
    • web.config
  • Friends.Implementation
    • 朋友.svc
      • Friends.svc.cs
  • Friends.Contract
    • IFriends.cs
  • DAL.实施
    • Blebleble.cs
  • DAL.合同
    • 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;
    }

问候。

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 这不是一个解决方案。对于相同的服务,没有 IoC 和构造函数,一切正常。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-28
    • 1970-01-01
    • 2011-03-08
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    相关资源
    最近更新 更多