Asp.net core 访问DelegatingHandler中的IUrlHelper
迁移到ASP.Net core后,以下处理程序不起作用。我看不到如何像以前那样从Asp.net core 访问DelegatingHandler中的IUrlHelper,asp.net-core,.net-core,Asp.net Core,.net Core,迁移到ASP.Net core后,以下处理程序不起作用。我看不到如何像以前那样从HttpRequestMessage访问IUrlHelper,也找不到具有相关扩展方法的包 使用config.MessageHandlers.Add(new LinkDecoratorHandler())添加处理程序 有人能帮忙吗 public class LinkDecoratorHandler : DelegatingHandler { protected override Task<
HttpRequestMessage
访问IUrlHelper
,也找不到具有相关扩展方法的包
使用config.MessageHandlers.Add(new LinkDecoratorHandler())添加处理程序代码>
有人能帮忙吗
public class LinkDecoratorHandler : DelegatingHandler
{
protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage
request, CancellationToken cancellationToken)
{
return base.SendAsync(request, cancellationToken)
.ContinueWith(task =>
{
var response = task.Result;
if (!(response.Content is ObjectContent))
{
return response;
}
var entity = (response.Content as ObjectContent).Value as ILinkedEntity;
var enumeration = (response.Content as ObjectContent).Value as IEnumerable<ILinkedEntity>;
if (entity != null || enumeration != null)
{
//no longer available
var helper = request.GetUrlHelper();
//blah
}
return response;
});
}
}
公共类linkdecorhandler:DelegatingHandler
{
受保护的覆盖任务SendAsync(HttpRequestMessage
请求,取消令牌(取消令牌)
{
return base.sendaync(请求、取消令牌)
.ContinueWith(任务=>
{
var response=task.Result;
如果(!(response.Content是ObjectContent))
{
返回响应;
}
var entity=(response.Content作为ObjectContent)。值作为ILinkIdentity;
变量枚举=(response.Content作为ObjectContent)。值作为IEnumerable;
if(实体!=null | |枚举!=null)
{
//不再可用
var helper=request.GetUrlHelper();
//废话
}
返回响应;
});
}
}
提前感谢如果您的LinkDecoratorHandler
是通过依赖项注入实例化的,那么您可以注入的实例来获取当前的ActionContext
。从那里,您可以。如果您的LinkDecorHandler
是通过依赖项注入实例化的,那么您可以注入的实例来获取当前的ActionContext
。从那里,您可以。上面的代码在哪里?上面的代码在哪里?