asp net web api自定义过滤器和http动词

use*_*271 3 c# asp.net asp.net-web-api

我正在使用自定义过滤器来验证内容类型,例如:

        public override void OnActionExecuting(HttpActionContext httpActionContext)
        {
            List<String> errors = new List<String>();

            // a
            if (httpActionContext.Request.Content.Headers.ContentType.MediaType == "application/json")
            {
            }
            else
            {
                errors.Add("Invalid content type.");
            }

                // more checks
        }
Run Code Online (Sandbox Code Playgroud)

上面的代码工作正常,但验证应该检查请求http动词,因为它应该仅针对put或post验证内容类型.我不想从httpget操作中删除自定义过滤器,因为我内部有更多检查,我不想将过滤器拆分为两部分,这意味着我必须检查过滤器内的http动词,但我可以找不到.

有小费吗?

cuo*_*gle 7

您可以从中获取方法类型(post或put):

public override void OnActionExecuting(HttpActionContext actionContext)
{
    string methodType = actionContext.Request.Method.Method;
    if (methodType.ToUpper().Equals("POST") 
            || methodType.ToUpper().Equals("PUT"))
    {
         // Your errors
    }
}
Run Code Online (Sandbox Code Playgroud)