标准 asp.NET 中的 OnActionExecuting 等效项?
Posted
技术标签:
【中文标题】标准 asp.NET 中的 OnActionExecuting 等效项?【英文标题】:OnActionExecuting equivalent in standard asp.NET? 【发布时间】:2013-05-22 17:04:15 【问题描述】:在标准的 asp.NET 中是否有 MVC.NET 的 OnActionExecuting
的等价物? ?
我认为它会是Page_Load
,因为每次执行操作(或加载页面)时都会调用OnActionExecuting
。但是当我尝试改用 Page_Load 时,我遇到了继承问题。
由于使我的解决方案与Page_Load
一起工作非常困难,我想我可能没有最好的......解决方案。
关于它们是否相等或足够接近的任何想法?
背景:
我正在将 MVC3 应用程序的一部分转换为标准 .NET 以包装在 SharePoint Web 部件中。
这是我要翻译的 MVC 代码,您可以看到我正在翻译的用户安全位:
protected override void OnActionExecuting(ActionExecutingContext filterContext)
if (!SiteCacheProvider.ItemCached(enmCacheKey.SiteSetting))
if (filterContext.IsImplementedGeneralPrincipal())
IUserProfile userProfile = ((IGeneralPrincipal)filterContext.HttpContext.User).UserProfile;
SiteCacheProvider.ChangeSiteSetting(userProfile.SiteID);
base.OnActionExecuting(filterContext);
【问题讨论】:
你有到目前为止的代码示例吗? @RaimondKuipers 我的 asp.NET 代码还是我正在转换的 MVC 代码? 两者都会有帮助 @MyName 看看我的回答。 @RaimondKuipers :这就是很多代码 【参考方案1】:首先,考虑到 no 操作在 ASP.NET 中,因为模型不同(基于事件) - 没有可以用 Action Filters 装饰的方法(操作) ,都是关于Page-Cycle 事件的。
其次,在 ASP.NET 中,您可以使用HTTP modules(尤其是HttpApplication.BeginRequest
)通过添加所需的逻辑来拦截对应用程序页面的传入请求。
来自 MSDN:
HTTP 模块用于拦截 HTTP 请求以进行修改或利用 根据需要(如身份验证)的基于 HTTP 的请求, 授权、会话/状态管理、日志记录、修改响应、 URL重写、错误处理、缓存......
例如:
using System;
using System.Web;
using System.Collections;
public class HelloWorldModule : IHttpModule
public string ModuleName
get return "HelloWorldModule";
public void Init(HttpApplication application)
application.BeginRequest += (new EventHandler(this.Application_BeginRequest));
application.EndRequest += (new EventHandler(this.Application_EndRequest));
private void Application_BeginRequest(Object source, EventArgs e)
HttpApplication application = (HttpApplication)source;
HttpContext context = application.Context;
context.Response.Write("<h1>HelloWorldModule: Beginning of Request</h1><hr>");
private void Application_EndRequest(Object source, EventArgs e)
HttpApplication application = (HttpApplication)source;
HttpContext context = application.Context;
context.Response.Write("<hr><h1>HelloWorldModule: End of Request</h1>");
public void Dispose()
【讨论】:
所以我开始请求将类似于执行操作?我认为开始请求会在操作执行之前发生......在 MVC 页面循环中,这就是我认为页面加载可能更适合的原因。我真的很困惑。那么 OnAuthorization 会是什么? 我猜它的 AuthorizeRequest ?? @MyName 问题是你的目标是什么,是指日志记录吗?安全吗? 安全主要是,我实际上认为有更好的方法来实现我想要的,而不仅仅是盲目地翻译代码哈哈。出于我的目的,我意识到用户是否是静态的并不重要。感谢您的帮助:D 我会将其标记为答案以上是关于标准 asp.NET 中的 OnActionExecuting 等效项?的主要内容,如果未能解决你的问题,请参考以下文章