我正在ASP.NET Core(RC2)中开发一个Tag Helper,在渲染Tag Helper时,我需要访问Request对象,因为我需要弄清楚请求的URL是什么。
因此,在ASP.NET Core中,访问Request对象的正确方法来自HttpContext
,并获取HttpContext
我需要将IHttpContextAccessor
注入我的标签帮手。
所以我尝试了但是在运行时抛出了以下异常:
InvalidOperationException:尝试激活“Auth0.AspNetCore.Mvc.TagHelpers.LockTagHelper”时,无法解析类型“Microsoft.AspNetCore.Http.IHttpContextAccessor”的服务。
我有什么理由不能将IHttpContextAccessor
注入我的Tag Helper吗?
另外,是否有另一种方法可以访问Tag Helper中的Request对象?
修改
似乎问题在于,自最新的候选版本开始,您必须手动配置DI以处理IHttpContextAccessor。因此,在ConfigureServices
中,您必须调用
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
我相信早期的测试版是自动配置的......
问题是这是一个库,我不希望用户在他们的应用程序中配置它以使我的库正常工作,所以任何其他更可靠的访问Request对象的方法仍然会受到赞赏:)
答案 0 :(得分:4)
根据Pranav的response关于GitHub上aspnet / mvc相同主题的问题#4744:
您可以将标有ViewContext
的{{1}}类型的属性添加到代码帮助器中。这将初始化为执行页面的ViewContextAttribute
:
ViewContext