gpt4 book ai didi

c# - 使用 ActionFilterAttribute 扩展限制 ASP.NET Web Api

转载 作者:太空宇宙 更新时间:2023-11-03 14:53:19 28 4
gpt4 key购买 nike

我正在尝试向我的 Web Api 应用程序添加使用限制。但是,未实现自定义属性。

自定义属性

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

namespace MyApp.Filters
{
public enum TimeUnit
{
Minute = 60,
Hour = 3600,
Day = 86400
}

[AttributeUsage(AttributeTargets.Method, AllowMultiple = true)]
public class ThrottleAttribute : ActionFilterAttribute
{
public TimeUnit TimeUnit { get; set; }
public int Count { get; set; }

public override void OnActionExecuting(ActionExecutingContext filterContext)
{
...
}
}
}

Controller

namespace MyApp.Controllers
{
public class GetUsersController : ApiController
{
[Throttle(TimeUnit = TimeUnit.Minute, Count = 5)]
[Throttle(TimeUnit = TimeUnit.Hour, Count = 20)]
[Throttle(TimeUnit = TimeUnit.Day, Count = 100)]
public ICollection<Users> Get(int id)
{
...
}
}
}

我离题了吗?属性实现不正确?扩展错误的属性?我知道我正在使用 System.Web.Mvc 而不是 System.Web.Http.Filters...但是我看到的所有资源都需要正是这样。也许你有更好的答案? :)

最佳答案

确保您在代码中的某个位置调用了 base.OnActionExecuting(filterContext)。如果您使用的是 .NET Standard(不了解 Core),那么您还应该记得在 App_Start\FilterConfig.cs 中注册您的过滤器:

public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
//add this part
filters.Add(new ThrottleAttribute());
}

关于c# - 使用 ActionFilterAttribute 扩展限制 ASP.NET Web Api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50819779/

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