【问题标题】:Customising instantiation of WCF web service自定义 WCF Web 服务的实例化
【发布时间】:2014-01-23 00:00:01
【问题描述】:

我有一个想要集成测试的 WCF RESTful 服务,因此需要在测试中本地创建一个服务实例,并引用我可以调用的客户端通道。我可以这样做,但是我使用的代码只会调用服务默认无参数构造函数,如下所示

_serviceHost = new WebServiceHost(typeof(UserService), baseAddress);
var binding = new WebHttpBinding();
_serviceHost.AddServiceEndpoint(typeof(Interface.IUserService), binding, address.Uri);            
_serviceHost.Open();

在我的 UserService 类中,我想为数据存储库注入一个依赖项,就像这样

  public UserService(IUserDataRepository userRepository)
        {
            _userRepository = userRepository;
        }

如何调整第一批代码,以便使用我在测试类中创建(模拟)的 IDataRepository 对象创建和自托管我的 WCF REST 服务?

【问题讨论】:

    标签: c# wcf web-services rest testing


    【解决方案1】:

    好吧,我认为您可以使用与生产环境相同的方法。我可能错了,但您必须已经拥有自定义的 ServiceHost 和 ServiceHostFactory。如果没有,请查看这篇文章Using Instance Provider and ServiceHostFactory to Construct the Service。您想通读步骤 1-3。您将需要从 WebServiceHost 派生来实现您自己的。然后您的代码将如下所示:

    _serviceHost = new YourCustomServiceHost(typeof(UserService), baseAddress);
    

    希望对你有帮助!

    【讨论】:

      猜你喜欢
      • 2013-03-17
      • 2020-06-18
      • 1970-01-01
      • 1970-01-01
      • 2010-11-26
      • 1970-01-01
      • 2012-09-17
      • 2011-08-26
      • 2015-05-24
      相关资源
      最近更新 更多