我正在寻找将经典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网络服务)?
答案 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>();
}
}
虽然在构建服务期间无法注入依赖项,但您可以在构造函数中自行解决它们。