我正在使用 ASP.NET WEB API 2 迁移现有的 Web 服务。
下面是我使用的一组过滤器
public class ValidateSession : ActionFilterAttribute
{
public override void OnActionExecuting(System.Web.Http.Controllers.HttpActionContext actionContext)
{
//var requestMessage = actionContext.Request.Content.ToString();
if (!actionContext.Request.Headers.Contains("source"))
{
actionContext.Request.Headers.Add("source", "1");
}
if (!actionContext.Request.Headers.Contains("appstore_session_id"))
{
actionContext.Response = actionContext.Request.CreateErrorResponse(System.Net.HttpStatusCode.BadRequest, "Session id is not included in the header");
}
}
}
下面是覆盖之前的 ActionFilter 属性的代码
public class OverrideSessionValidation : ActionFilterAttribute, IOverrideFilter
{
public Type FiltersToOverride
{
get { return typeof(ValidateSession); }
}
public bool AllowMultiple
{
get { return true; }
}
}
控制器的代码也在下面给出
[ValidateSession]
public class SampleController : ApiController
{
public string GetSessionValues()
{
return "from session vals";
}
[OverrideSessionValidation]
public string GetDefaultVals()
{
return "from DefVals";
}
}
可以看出,我已将验证会话置于类级别,并且对于一种方法,我想覆盖它。因此,对于第二种方法,我使用了 overrideSessionValidation。虽然
调用了 OverrideSessionValidation 的 FiltersToOverride,我看到也调用了 ValidateSession 的 onActionExcuting。我希望类过滤器 onActionExecuting 不应该被调用,因为我有 Override 相同的。
请让我知道是什么错误,以便我可以解决这个问题
感谢和问候文卡特什