我正在尝试将服务注入到我编写的 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
,但是当我使用它时,我简单地得到一个空响应,它永远不会命中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; } }
}