2012-09-11 58 views
3

我正在尋找納入一個經典的ASMX Web服務進入我的MVC3環境的最佳方法。我想要在兩者之間共享內核/容器。Ninject瓦特/在MVC3/Ninject 3環境ASMX Web服務

與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

的MVC框架支持與Ninject集成了MVC的DependencyResolver。雖然它不是可以定義爲ASMX web服務的定製工廠,你可以做到以下幾點:

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

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

雖然你不能建設服務的過程中注入依賴,你可以在構造函數中自己解決這些問題。

+0

謝謝,這項工作,現在將不得不做。不幸的是,它將服務直接綁定到ASP.NET MVC。希望能有一個更好的辦法:( –

+1

@NateRickard其實,DependencyResolver是試圖概括依賴注入的問題的組成部分。不是每個IoC框架實現自己的系統,它們能夠扎入DependencyResolver系統與其他交互。庫 –

+0

是的,在這方面它的好,不把我綁到Ninject我的問題是,這個服務/可以在不同的環境中使用 - ASP.NET Web窗體,MVC等,所以使用DependencyResolver增加MVC的依賴關係,因爲它居住在該名稱空間中。 –