访问api和web的控制器,不太一样
一,API过滤器:
namespace Web_SJWD.Filters
{
public class APISignAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(HttpActionContext actionContext)
{
//获取参数
string sign = "";
string data = "";
//使用filterContext.ActionParameters["sign"]可以修改参数
//HttpContext.Current.Request.Form["sign"] 不能修改参数
//filterContext.ActionParameters["sign"] = sign + "123"
if (HttpContext.Current.Request.QueryString["sign"] != null) sign = HttpContext.Current.Request.QueryString["sign"].ToUpper(); ;
if (HttpContext.Current.Request.Form["data"] != null) data = HttpContext.Current.Request.Form["data"].ToString();
Console.WriteLine("aaa");
base.OnActionExecuting(actionContext);
}
}
}
api 局部过滤器
namespace API.Controllers
{
//可以在controller下,
//这样代表整个controller中的action都有权限控制
[APISignAttribute]
public class TestController : BaseControllerAPI
{
[HttpGet]
public string Get()
{
return "value";
}
//也可以在单个action下
[APISignAttribute]
[HttpGet]
public string haha(Son model)
{
return "value1";
}
}
}
api 全局过滤器
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Filters.Add(new APISignAttribute());
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
二,mvc 过滤器
mvc 过滤器
namespace MVC.Filter
{
public class WebAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
//获取参数
string sign = "";
string data = "";
if (HttpContext.Current.Request.QueryString["sign"] != null) sign = HttpContext.Current.Request.QueryString["sign"].ToUpper(); ;
if (HttpContext.Current.Request.Form["data"] != null) data = HttpContext.Current.Request.Form["data"].ToString();
Debug.Write("aaa");
base.OnActionExecuting(filterContext);
}
}
}
mvc 全局过滤器
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
filters.Add(new WebAttribute());
}
}
PS:如果过滤器不执行,那么命名空间可能有问题
WebAPI:System.Web.Http.Filters
MVC:System.Web.Http.Mvc