问题标签 [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.
c# - Controller.OnActionExecuting 首次访问操作后未触发
在我的 MVC 4 Web 应用程序中,我要求用户在使用该应用程序一定天数后选择一种付款方式。
我通过创建一个控制器基类并让我的所有控制器都继承自它来实现这一点。基类具有以下代码:
该Choose
操作具有允许您设置付款详细信息或推迟选择一段时间的链接。如果访问了这些链接中的任何一个,则在后续调用中pay.ForceToChooseMandate
返回false
,从而允许用户恢复应用程序的正常操作。
第一次访问动作时,OnActionExecuting
触发并且重定向工作正常。但是,如果用户第二次访问该操作,OnActionExecuting
则永远不会触发,并且他们会Choose
再次被重定向到该操作,即使这次pay.ForceToChooseMandate
会为他们评估false
。
但是,如果他们访问以前未访问过的操作,则会OnActionExecuting
按预期触发。
我怎样才能阻止这种情况的发生,并且OnActionExecuting
一直开火,这样它才能始终反映用户的当前状态?
c# - 在 OnActionExecuting 中获取预期的操作参数类型
问题:
是否有可能知道被调用的操作所期望的参数类型?例如,我有一些action
:
并TestCustomAttr
定义为:
因此,当调用TestAction
此处的内部OnActionExecuting
时,我想知道该TestAction
方法所期望的类型。(例如:在这种情况下,有 2 个预期参数。一个是 type int
,另一个是 type string
。
实际目的:
实际上我需要更改QueryString
. 我已经能够(通过HttpContext.Current.Request.QueryString
)获取查询字符串值,更改它,然后手动将其添加到ActionParameters
asfilterContext.ActionParameters[key] = updatedValue;
问题:
目前,我尝试将 value 解析为int
,如果解析成功,我假设它是 an int
,所以我进行了 require 更改(例如 value + 1),然后将其添加到操作参数中,针对其键。
但我想知道确切的预期类型。因为string
可以是 as ,对于其他参数"123"
,它会被假定int
为整数参数并添加,导致 null 异常。(反之亦然)。因此,我想将更新的值解析为确切的预期类型,然后针对其键添加到操作参数。那么,我该怎么做呢?这甚至可能吗?可能会Reflection
有所帮助吗?
重要:我愿意接受建议。如果我的方法不能很好地达到实际目的,或者有更好的方法,请分享;)
c# - 了解 ActionFilterAttribute 中的 ActionExecutingContext.Result
我最近阅读了这段代码,它使 MVC Web API 允许 CORS(跨源资源共享)。我知道这ActionFilterAtrribute
使它成为一个过滤器,但我不确定这堂课发生了什么:AllowCORS
.
所以基本上,如果我们收到的请求方法是 aHttpOPTIONS
我们会做一些我在这种情况下不太理解的事情。否则,我们会做一些我也不确定的事情吗?
有人会提供帮助和详细说明吗,这里到底发生了什么?
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
今天的结论:它似乎更像是一个路由/重定向问题。
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."}
我在这里遗漏了什么还是逻辑不完整?
validation - Web API - 访问 ActionFilterAttribute OnActionExecuting 内的自定义属性属性
我需要访问自定义 DataAnnotation 属性中的属性。如何访问此属性以设置响应值?该属性被添加到模型属性中。
c# - MVC ActionFilterAttribute - 从动作中获取一个值
在 MVC 中,我注册了一个服务,Startup
用于验证如下操作:
启动.cs
然后将其放在需要检查访问权限的任何内容上。
控制器:
我需要做的就是从正在执行的操作中传递一个值,以供 ActionFilterAttribute 读取。Startup.cs
现在因为我需要并且希望服务在我无法找到传递值的方法中初始化- 请告诉我我忽略了什么。
正如你所看到的,我已经尝试过路由数据、会话信息......但是在实际操作中设置的任何内容我都无法在 中读取ActionFilterAttribute
,它只是为所有这些返回 null。
谁能告诉我这个设置,我如何从正在执行的操作中读取一个值?
服务:
c# - 确定请求是来自服务器还是客户端c#
有没有办法确定OnActionExecuting(ActionExecutingContext filterContext)
请求是来自服务器还是客户端?
asp.net-web-api2 - 静默阻止 WEB API 方法执行
我想拒绝在周末访问某些网络方法。动作过滤器似乎是自然的载体。
这可行,但我真的不想抛出Exception
. 我可以使用什么来代替Exception
只是默默地拒绝进入?