问题标签 [onactionexecuting]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1936 浏览

c# - Controller.OnActionExecuting 首次访问操作后未触发

在我的 MVC 4 Web 应用程序中,我要求用户在使用该应用程序一定天数后选择一种付款方式。

我通过创建一个控制器基类并让我的所有控制器都继承自它来实现这一点。基类具有以下代码:

Choose操作具有允许您设置付款详细信息或推迟选择一段时间的链接。如果访问了这些链接中的任何一个,则在后续调用中pay.ForceToChooseMandate返回false,从而允许用户恢复应用程序的正常操作。

第一次访问动作时,OnActionExecuting触发并且重定向工作正常。但是,如果用户第二次访问该操作,OnActionExecuting则永远不会触发,并且他们会Choose再次被重定向到该操作,即使这次pay.ForceToChooseMandate会为他们评估false

但是,如果他们访问以前未访问过的操作,则会OnActionExecuting按预期触发。

我怎样才能阻止这种情况的发生,并且OnActionExecuting一直开火,这样它才能始终反映用户的当前状态?

0 投票
1 回答
3443 浏览

c# - 在 OnActionExecuting 中获取预期的操作参数类型

问题: 是否有可能知道被调用的操作所期望的参数类型?例如,我有一些action

TestCustomAttr定义为:

因此,当调用TestAction此处的内部OnActionExecuting时,我想知道该TestAction方法所期望的类型。(例如:在这种情况下,有 2 个预期参数。一个是 type int,另一个是 type string

实际目的: 实际上我需要更改QueryString. 我已经能够(通过HttpContext.Current.Request.QueryString)获取查询字符串值,更改它,然后手动将其添加到ActionParametersasfilterContext.ActionParameters[key] = updatedValue;

问题: 目前,我尝试将 value 解析为int,如果解析成功,我假设它是 an int,所以我进行了 require 更改(例如 value + 1),然后将其添加到操作参数中,针对其键。

但我想知道确切的预期类型。因为string可以是 as ,对于其他参数"123",它会被假定int为整数参数并添加,导致 null 异常。(反之亦然)。因此,我想将更新的值解析为确切的预期类型,然后针对其键添加到操作参数。那么,我该怎么做呢?这甚至可能吗?可能会Reflection有所帮助吗?

重要:我愿意接受建议。如果我的方法不能很好地达到实际目的,或者有更好的方法,请分享;)

0 投票
0 回答
486 浏览

actionfilterattribute - WEB API 在 actionfilter 属性中捕获异常并在 actionmethod 中重新抛出。应捕获特定捕获块中引发的异常

0 投票
1 回答
1887 浏览

c# - 了解 ActionFilterAttribute 中的 ActionExecutingContext.Result

我最近阅读了这段代码,它使 MVC Web API 允许 CORS(跨源资源共享)。我知道这ActionFilterAtrribute使它成为一个过滤器,但我不确定这堂课发生了什么:AllowCORS.

所以基本上,如果我们收到的请求方法是 aHttpOPTIONS我们会做一些我在这种情况下不太理解的事情。否则,我们会做一些我也不确定的事情吗?

有人会提供帮助和详细说明吗,这里到底发生了什么?

0 投票
2 回答
291 浏览

c# - 在 MVC Azure 中实例化 OnActionExecuting 中的控制器(...不抛出 404)

目标是在 Azure MVC 站点管理的相同 url 上添加维护批次。网址应该类似于:

我决定OnActionExecuting在 url 中覆盖并捕获我需要的信息来触发该maintenance方法。我不熟悉 MVC 项目,这听起来可能不是很传统......

这段代码和我在本地需要的一样工作,该maintenance方法被调用并完成工作。但是在 Azure 上部署时,此修改会引发 404 错误。有趣的是,我发送了两封调试电子邮件:我没有收到第二封"DEBUG - starts maintenance",因此我的 404 错误来自OnActionExecuting.

首先,我想了解为什么我的开发机器和 Azure 之间的行为不同?

那么,我怎样才能让它工作呢?谢谢,

1 月 4 日编辑:
我取得了一些进展,但这个问题仍未解决。
- 关于我的开发机器和 Azure 之间的区别:这个站点上有一些重定向:https、404 和不存在的域。我认为这是由于 404 错误。用 try/catch 封装代码并没有给我发送任何错误,所以我猜我可以从假设中抑制 404。- 我在没有更多成功的情况下
尝试了上面的代码。 - 我注意到第一封电子邮件实际上只在第一次测试时发送。我第二次运行测试时没有发送它。这对我来说没有任何意义,因为每次都应该检查会话。OnAuthorization
DEBUG - On result executing

今天的结论:它似乎更像是一个路由/重定向问题。

0 投票
2 回答
531 浏览

c# - OnActionExecuting 方法上的 URL 重定向

我们正在尝试实现一个非托管标头,它可以*.website.com在 ASP.NET 中接受之前的任何内容。由于它将接受任何子域,我们扩展了 HttpContextBase 类以添加自定义方法。

此方法将验证context.Url.Host数据库中是否存在有效主机或其子域,如果不存在则将请求重定向到默认主机website.com。为此,我在下面添加了这行代码BaseController

每当它返回时,它都会重定向到默认主机false,但是它会引发异常:{"Server cannot append header after HTTP headers have been sent."}

我在这里遗漏了什么还是逻辑不完整?

0 投票
1 回答
690 浏览

validation - Web API - 访问 ActionFilterAttribute OnActionExecuting 内的自定义属性属性

我需要访问自定义 DataAnnotation 属性中的属性。如何访问此属性以设置响应值?该属性被添加到模型属性中。

0 投票
2 回答
2012 浏览

c# - MVC ActionFilterAttribute - 从动作中获取一个值

在 MVC 中,我注册了一个服务,Startup用于验证如下操作:

启动.cs

然后将其放在需要检查访问权限的任何内容上。

控制器:

我需要做的就是从正在执行的操作中传递一个值,以供 ActionFilterAttribute 读取。Startup.cs现在因为我需要并且希望服务在我无法找到传递值的方法中初始化- 请告诉我我忽略了什么。

正如你所看到的,我已经尝试过路由数据、会话信息......但是在实际操作中设置的任何内容我都无法在 中读取ActionFilterAttribute,它只是为所有这些返回 null。

谁能告诉我这个设置,我如何从正在执行的操作中读取一个值?

服务:

0 投票
1 回答
24 浏览

c# - 确定请求是来自服务器还是客户端c#

有没有办法确定OnActionExecuting(ActionExecutingContext filterContext)请求是来自服务器还是客户端?

0 投票
1 回答
246 浏览

asp.net-web-api2 - 静默阻止 WEB API 方法执行

我想拒绝在周末访问某些网络方法。动作过滤器似乎是自然的载体。

这可行,但我真的不想抛出Exception. 我可以使用什么来代替Exception只是默默地拒绝进入?