如何解决如何在控制器外部获取Request.Scheme属性 Net Core 2.2
在尝试从控制器外部生成url时,我无法到达Request.Scheme
。
在控制器中,我可以这样做以生成没有问题的网址:
//get UserManager bits
var callBackUrl = Url.CallBackExtensionLink(user.Id,token,Request.Scheme);
CallBackExtensionLink()
是我创建的IUrlHelper
扩展方法。
但是,Request.Scheme会引发空引用异常。
如何在控制器之外获取值?
解决方法
因此,在进行了更多调查之后,我能够通过将IUrlHelper
注入.net核心中的DI来缓解此问题,这与其他方法的完成方式不同。
将此添加到DI中:
services.AddSingleton<IActionContextAccessor,ActionContextAccessor>();
services.AddScoped<IUrlHelper>(x => {
var actionContext = x.GetRequiredService<IActionContextAccessor>().ActionContext;
var factory = x.GetRequiredService<IUrlHelperFactory>();
return factory.GetUrlHelper(actionContext);
});
然后将IUrlHelper传递到实现类的构造函数中。
private readonly IUrlHelper helper;
YourConstructor(IUrlHelper helper){
this.helper = helper;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。