Ninject在MVC3 / Ninject 3环境中使用ASMX Web服务

时间:2012-09-11 21:13:58

标签: asp.net ninject asmx ninject.web.mvc ninject.web

我正在寻找将经典asmx Web服务合并到我的MVC3环境中的最佳方法。我希望在两者之间共享内核/容器。

过去使用ASP.NET Web表单我能够使用以下内容:

[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.Web.Script.Services.ScriptService]
public class Service : WebServiceBase
{
    [Inject]
    public IContextProvider ContextProvider { get; set; }
...

这使用较旧的Ninject.Web来使用WebServiceBase,PageBase等之间共享的KernelContainer来共享内核。

现在我有一个使用Ninject.Web.MVC的MVC3应用程序,我需要一个较旧的Web服务,使用相同的内核/绑定在同一个空间中运行。我无法找到任何关于如何启动和运行这样的设置的信息。

是否有人可以指出我的任何想法,示例或帖子(除了不使用asmx网络服务)?

1 个答案:

答案 0 :(得分:4)

MVC框架支持DependencyResolver,它与Ninject for MVC集成。虽然无法为ASMX Web服务定义自定义工厂,但您可以执行以下操作:

public class Service : WebService
{
  public IContextProvider ContextProvider {get;set;}

  public Service()
  {
    ContextProvider = DependencyResolver.Current.GetService<IContextProvider>();
  }
}

虽然在构建服务期间无法注入依赖项,但您可以在构造函数中自行解决它们。