Я пытаюсь ввести службу в HttpHandler, который я написал. Но все, что я получаю, - это Служба с нулевым значением.NInjecting в asp.net сайт httphandler
Я создал небольшой пример, чтобы проиллюстрировать мою проблему, используя обычный веб-сайт asp.net.
public class MyHandler :IHttpHandler
{
[Inject]
public IHelloService HelloService { get; set; }
public void ProcessRequest(HttpContext context)
{
context.Response.Write(HelloService.Hello());
}
public bool IsReusable { get; private set; }
}
Служба
public interface IHelloService
{
string Hello();
}
public class HelloService : IHelloService
{
public string Hello()
{
return string.Format("Hello, the time is now {0}", DateTime.Now.ToShortTimeString());
}
}
NinjectWebCommon.cs
private static void RegisterServices(IKernel kernel)
{
kernel.Bind<IHelloService>().To<HelloService>();
}
И, наконец, моя web.config
<httpHandlers>
<add verb="*" path="*.aspx" type="HttpHandlerTest.App_Code.MyHandler" />
</httpHandlers>
Я могу видеть, что есть Ninject.Web.HttpHandlerBase
, но когда Я меня e, что я просто получаю пустой ответ назад, и он никогда не попадает в ProcessRequest
.
Просто для записи, это то, что MyHandler выглядит при использовании HttpHandlerBase
public class MyHandler :Ninject.Web.HttpHandlerBase
{
[Inject]
public IHelloService HelloService { get; set; }
public void ProcessRequest(HttpContext context)
{
context.Response.Write(HelloService.Hello());
}
protected override void DoProcessRequest(HttpContext context)
{
}
public override bool IsReusable { get { return true; } }
}