我有下面的Web ActionFilterAttribute
namespace namespace.Filters {
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http.Controllers;
using System.Web.Http.Filters;
public class LogApiRequestActionFilterAttribute : ActionFilterAttribute {
public LogApiRequestActionFilterAttribute() {
}
private void logData(HttpActionContext actionContext) {
var controllerName = actionContext.ActionDescriptor.ControllerDescriptor.ControllerType.FullName;
var actionName = actionContext.ActionDescriptor.ActionName;
var parameters = "";
foreach (var item in actionContext.ActionArguments) {
parameters += string.Format("{0} = {1}, ", item.Key, item.Value);
}
if (parameters.Any()) {
parameters = parameters.Remove(parameters.Count() - 2);
}
var message = string.Format("{0}.{1}({2})", controllerName, actionName, parameters);
// Do the logging
}
public override void OnActionExecuting(HttpActionContext actionContext) {
logData(actionContext);
base.OnActionExecuting(actionContext);
}
}
}当我通过WebApiConfig.cs全局添加它时,如下所示:
config.Filters.Add(new LogApiRequestActionFilterAttribute());但是logData方法从未被调用过。有人知道为什么吗?
发布于 2015-04-08 09:34:18
我刚刚发现了我的问题,非常感谢现在他不能被命名为。
我的过滤器已经正确注册,并且加载得很好,只是我测试和调试的方法没有被请求调用。它是从剃须刀助手那里调用的,Request-property当然是null。
因此,修复方法是使用一个用http request调用的操作,而不是普通的方法调用。
发布于 2015-04-08 09:14:48
你用那个过滤器装饰你的控制器(或任何动作方法)吗?
例如:
https://stackoverflow.com/questions/29495859
复制相似问题