我正在寻找将经典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网络服务)?
MVC框架支持DependencyResolver,它与Ninject for MVC集成。虽然不可能为ASMX web服务定义自定义工厂,但您可以执行以下操作:
public class Service : WebService
{
public IContextProvider ContextProvider {get;set;}
public Service()
{
ContextProvider = DependencyResolver.Current.GetService<IContextProvider>();
}
}
虽然您不能在构建服务的过程中注入依赖项,但您可以在构造函数中自己解决它们。