我有一个依赖于 HttpContextBase 的服务。
Ninject 已经为我注入了它,因为它在 MvcModule 中设置为在new HttpContextWrapper(HttpContext.Current)
请求 HttpContextBase 时返回
我想在 Application_AuthenticateRequest 中使用此服务,所以我使用属性注入,以便 Ninject 为我解决它
当我尝试访问 HttpContextBase 上的 Request.UserHostAddress 时,出现Value does not fall within the expected range
异常
如果我HttpContext.Current.Request.UserHostAddress
直接打电话,它可以正常工作
示例服务.cs
public class ExampleService : IExampleService {
HttpContextBase _contextBase;
public ExampleService(HttpContextBase contextBase) {
_contextBase = contextBase;
}
public void DoSomething() {
var ip = HttpContext.Current.Request.UserHostAddress; <== this works
ip = _contextBase.Request.UserHostAddress; <== this fails
}
}
全球.asax
[Inject]
public IExampleService ExampleService { get; set; }
public void Application_AuthenticateRequest() {
ExampleService.DoSomething();
}
我在这里遗漏了一些东西,但我看不到什么