2013-05-06 75 views
3

我的項目中有一個Web服務,用於將json數據返回給Ajax調用。Ninject在Web服務中注入服務接口

注入我的ClientService在普通頁面上工作正常,但是如何讓它在Web服務中工作?

NinjectWebCommon.cs:

private static void RegisterServices(IKernel kernel) 
     { 
      kernel.Bind<IClientService>().To<ClientService>(); 
     } 

Default.aspx.cs:作品!

public partial class _Default : System.Web.UI.Page 
    { 
[Inject] 
     public IClientService clientService { get; set; } 

MyWebservice.asmx:NullReferenceException異常(clientService爲null)

public class MyWebService: System.Web.Services.WebService 
    {  
     [Inject] 
     public IClientService clientService { get; set; } 


[WebMethod, ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
     public MyObject GetClients(int id) 
     { 
      var list = clientService.GetClients(id); 
+0

你看任何一個樣品,看看是否有被注入一個WebService的例子嗎? – 2013-05-06 19:59:33

+0

我能找到的唯一例子是http://stackoverflow.com/questions/10765424/how-to-manually-instantiate-objects-using-ninject-for-mvc-3。儘管最新版本的ninject中似乎沒有DependencyResolver類? – woggles 2013-05-07 06:06:27

+0

我的意思是在github.com/ninject - 我沒有看,但如果沒有某個asmx,我會感到驚訝。請注意,DependencyResolver的東西在不同的NuGet包中(同樣,請參閱MVC示例) – 2013-05-07 08:23:19

回答

6

我已經解決了這個問題。我改變爲MyWebService類從Ninject.Web.WebServiceBase派生:

public class MyWebService: WebServiceBase