gpt4 book ai didi

asp.net-web-api2 - 从OWIN中间件中的当前 Controller 获取属性

转载 作者:行者123 更新时间:2023-12-02 04:43:22 25 4
gpt4 key购买 nike

使我发疯,所以希望有人可以帮助我。

使用WebAPI,我可以做这样的事情

public class AuthenticationMessageHandler : DelegatingHandler
{
protected override async Task<HttpResponseMessage>SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
try
{
var config = GlobalConfiguration.Configuration;
var controllerSelector = new DefaultHttpControllerSelector(config);
var descriptor = controllerSelector.SelectController(request);

var atts = descriptor.GetCustomAttributes<IgnoreValidationAttribute>();

这让我拥有了我的属性,并且我感到幸福和笑脸,一切都很好。



使用属性路由,我相信是问题所在,使用上面的代码或替换
var config = GlobalConfiguration.Configuration;


var config = request.GetConfiguration();

我得到空异常,但我却不那么开心和笑脸。当我陷入困境时,可以有一个很棒的人给我一些指导来解决这个问题吗?

提前致谢!

最佳答案

这是我在ASP MVC应用程序中执行的操作,因此我认为应该有一种相似的方法来从Web API中的请求访问描述符

    using System.Web;
using System.Web.Mvc;

private bool HasAttribute<T>()
{
var skip = false;
try
{
var routeDataList = HttpContext.Current.Request.RequestContext.RouteData.Values.Values.First() as IList<System.Web.Routing.RouteData>;
var routeData = routeDataList.First() as System.Web.Routing.RouteData;
var actionDescriptorList = routeData.DataTokens.Values.First() as IList<object>;
var reflectedActionDescriptor = actionDescriptorList.First() as ReflectedActionDescriptor;
skip = reflectedActionDescriptor.GetCustomAttributes(typeof(T), false)
.Any();
}
catch
{
//can't get the attributes; skip should be false
}
return skip;
}

关于asp.net-web-api2 - 从OWIN中间件中的当前 Controller 获取属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35470688/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com