Ninject inject a service interface in a web servic

2019-07-07 03:03发布

I have a web service in my project that I use to return json data to ajax calls.

Injecting my ClientService works fine on regular pages but how do I get it to work in the Web Service?

NinjectWebCommon.cs:

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

Default.aspx.cs: works!

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

MyWebservice.asmx: NullReferenceException (clientService is 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);

1条回答
地球回转人心会变
2楼-- · 2019-07-07 03:36

I have solved this problem. I changed MyWebService class to derive from Ninject.Web.WebServiceBase:

public class MyWebService: WebServiceBase
查看更多
登录 后发表回答