【问题标题】:C# HttpSelfHostServer can I regain control of Controller construction?C# HttpSelfHostServer 我可以重新获得对控制器构造的控制权吗?
【发布时间】:2012-12-05 11:47:53
【问题描述】:

由于服务器端的限制,我需要在 .NET 中构建一个自托管 Web 服务...

我目前正在查看 HttpSelfHostServer,但我非常对控制器的神奇构造不感冒,这似乎是仅基于名称并仅使用默认构造函数。

对于我的测试,我需要将一个值注入控制器并使用 IoC 框架来实现这一用途,其中香草依赖注入就足够了。

有什么方法可以用 HttpSelfHostServer 做到这一点?或者是否有其他不被弃用的自托管替代方案可以让我控制我的控制器构造函数调用。

【问题讨论】:

  • 也许System.Net.HttpListener

标签: c# web self-hosting


【解决方案1】:

您需要提供给HttpSelfHostServer 构造函数的HttpSelfHostConfiguration 实例从HttpConfiguration 类继承DependencyResolver 属性。因此,您可以提供一个自定义的依赖关系解析器,例如 here

【讨论】:

  • 唉,这就是我所担心的......我不得不编写大量样板代码,因为我无法控制自己的对象构造。
  • 如果您使用现成的 DependencyResolver,这将变得非常简单,真的。查看here 获取有关如何使用Unity.WebAPI package 的说明。
  • 谢谢 SG,看来我唯一的选择是寻找替代方案。我非常担心 HttpSelfHostServer 不允许开发人员选择我自己项目的复杂程度......我只是不想包含一个 IoC 框架来将单个参数传递给构造函数。但再次感谢您的回答。
【解决方案2】:

我能够在单元测试中覆盖IHttpControllerActivator,我认为这与您尝试做的类似。

例如

httpConfiguration.Services.Replace(typeof(IHttpControllerActivator), 
 Mock<IHttpControllerActivator>());

(还有更多信息。关于服务here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-15
    • 2011-01-13
    • 1970-01-01
    • 2013-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多