私が書いた HttpHandler にサービスを注入しようとしています。しかし、私が得ているのは、null 値を持つ Service だけです。
通常のasp.net Webサイトを使用して問題を説明する小さな例を作成しました。
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
。
記録のために、これは HttpHandlerBase を使用する場合の MyHandler の外観です。
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; } }
}