在迁移到ASP.Net核心之后,下面的处理程序无法工作。我看不出如何像以前那样从IUrlHelper中访问HttpRequestMessage,也找不到包含相关扩展方法的包。
该处理程序使用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;
});
}
}提前感谢
发布于 2018-05-03 00:18:50
如果您的LinkDecoratorHandler是通过依赖项注入实例化的,那么您可以注入IActionContextAccessor的一个实例以获得当前的ActionContext。从那里,你可以创建您自己的UrlHelper实例。
https://stackoverflow.com/questions/49643562
复制相似问题