Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么我的ASP.Net MVC4 WEBAPI ActionFilter在运行时被忽略?_C#_Asp.net Mvc_Asp.net Mvc 4_Asp.net Web Api - Fatal编程技术网

C# 为什么我的ASP.Net MVC4 WEBAPI ActionFilter在运行时被忽略?

C# 为什么我的ASP.Net MVC4 WEBAPI ActionFilter在运行时被忽略?,c#,asp.net-mvc,asp.net-mvc-4,asp.net-web-api,C#,Asp.net Mvc,Asp.net Mvc 4,Asp.net Web Api,我正在尝试使用ActionFilter属性,以便截获OnActionExecuting事件,并在我的web api代码中执行令牌验证。。。下面是我的一些安全代码(一个很好的样板代码,用于检查令牌是否位于具有实体框架的数据库中): 我只是将其应用于控制器上的一个动作方法,如下所示: public class CustomerController : ApiController { [HttpPost] [TokenValidationFilt

我正在尝试使用ActionFilter属性,以便截获OnActionExecuting事件,并在我的web api代码中执行令牌验证。。。下面是我的一些安全代码(一个很好的样板代码,用于检查令牌是否位于具有实体框架的数据库中):

我只是将其应用于控制器上的一个动作方法,如下所示:

public class CustomerController : ApiController
    {
    [HttpPost]        
            [TokenValidationFilterAttribute]
            public HttpResponseMessage Create(ActionData actionData)
            {

                return Request.CreateResponse(HttpStatusCode.OK);
            }...
所以,问题是,如果我在过滤器代码中设置断点,在第一行,我们甚至没有得到断点命中。我还添加了一些Debug.Print()存根,以检查我的环境是否存在任何问题。。。没有什么。。。代码就是不运行

那么,有人知道如何处理这个问题吗???我在这里检查一个解决方案变得疯狂,似乎这个actionFilters没有那么好的文档记录。在MSDN中只有一个页面,并且没有说更多我已经实现的内容

谢谢!我真的很感谢你的帮助


关于…

您很可能是从
System.Web.Mvc.ActionFilterAttribute
派生的,而不是从
System.Web.Http.Filters.ActionFilterAttribute
派生的


第一个来自ASP.NET MVC,第二个来自ASP.NET Web API-在从
ApiController
交付时,您需要第二个(因此您很可能在ASP.NET MVC应用程序中托管ASP.NET Web API)。

我希望它们在与MVC对应的类同名的类前面加上“API”.太棒了!它起作用了!但是我非常同意Dmitry的说法,这个垃圾应该改名为…@DmitryStarosta-这就是名称空间的用途。@MystereMan,你是对的。但是考虑到VisualStudio本身以及常用的Resharper插件正试图为您解析名称空间,很容易犯这个错误。它只在我的开发机器上本地工作。它在IISExpress和Azure Compute Emulator上运行得非常好。但是,当发布在真实的azure环境中时,它就是不起作用。使用tpeczek bellow的正确继承检查更正后的代码:我的问题是,似乎从未调用此代码,并且,控制器方法中的对象参数“actionData”从未填充,始终返回null。。。同样,它只发生在azure上,而不是在本地IISExpress上,也不是在azure计算仿真程序中。。。有什么线索吗?再次感谢。。。
public class CustomerController : ApiController
    {
    [HttpPost]        
            [TokenValidationFilterAttribute]
            public HttpResponseMessage Create(ActionData actionData)
            {

                return Request.CreateResponse(HttpStatusCode.OK);
            }...