4

我正在寻找将经典 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 Web 服务)?

4

1 回答 1

4

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

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

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

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

于 2012-09-12T01:01:31.297 回答