OnActionExecuting 在标准 asp.NET 中等效吗?

2023-12-07

是否有 MVC.NET 的等效项OnActionExecuting在标准 asp.net 中? ?

我以为会是Page_Load since 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);
        }

首先,考虑到no操作位于 ASP.NET 中,因为模型不同(基于事件) - 没有可以用来装饰的方法(操作)动作过滤器,这都是关于页面循环 events.

其次,在 ASP.NET 中,您可以使用HTTP 模块 (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()
    {
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OnActionExecuting 在标准 asp.NET 中等效吗? 的相关文章

  • std::list 线程push_back、front、pop_front

    std list 线程安全吗 我假设不是这样 所以我添加了自己的同步机制 我认为我有正确的术语 但我仍然遇到问题 每个函数都由单独的线程调用 Thread1 不能等待 它必须尽可能快 std list
  • 从经典 ASP 调用 .Net C# DLL 方法

    我正在开发一个经典的 asp 项目 该项目需要将字符串发送到 DLL DLL 会将其序列化并发送到 Zebra 热敏打印机 我已经构建了我的 DLL 并使用它注册了regasm其次是 代码库这使得 IIS 能够识别它 虽然我可以设置我的对象
  • WPF 数据绑定到复合类模式?

    我是第一次尝试 WPF 并且正在努力解决如何将控件绑定到使用其他对象的组合构建的类 例如 如果我有一个由两个单独的类组成的类 Comp 为了清楚起见 请注意省略的各种元素 class One int first int second cla
  • IsReusable 属性中的上下文切换

    是否可重用属性 下面是我的理解IsReusable财产 如果处理程序返回静态内容 将值设置为 true 是安全的 但如果线程返回动态内容 为了使其线程安全 IsReusable应设置为 false 在这种情况下 可能会发生上下文切换 这可能
  • ASP.NET Core 3.1登录后如何获取用户信息

    我试图在登录 ASP NET Core 3 1 后获取用户信息 如姓名 电子邮件 id 等信息 这是我在登录操作中的代码 var claims new List
  • 有没有办法使用 ASP.NET 在用户离开页面时始终运行某些服务器端代码?

    我想知道当用户离开 ASP NET 中的页面时是否有任何方法可以始终运行一些服务器端代码 页面卸载事件不好 因为如果有人单击链接 则不会调用该事件 理想情况下 即使用户关闭浏览器 我也希望代码能够运行 我怀疑我所问的问题是不可能的 但问一下
  • 如何获取 EF 中与组合(键/值)列表匹配的记录?

    我有一个数据库表 其中包含每个用户 年份组合的记录 如何使用 EF 和用户 ID 年份组合列表从数据库获取数据 组合示例 UserId Year 1 2015 1 2016 1 2018 12 2016 12 2019 3 2015 91
  • 两个静态变量同名(两个不同的文件),并在任何其他文件中 extern 其中一个

    在一个文件中将变量声明为 static 并在另一个文件中进行 extern 声明 我认为这会在链接时出现错误 因为 extern 变量不会在任何对象中看到 因为在其他文件中声明的变量带有限定符 static 但不知何故 链接器 瑞萨 没有显
  • 结构体的内存大小不同?

    为什么第一种情况不是12 测试环境 最新版本的 gcc 和 clang 64 位 Linux struct desc int parts int nr sizeof desc Output 16 struct desc int parts
  • 如何定义一个可结构化绑定的对象的概念?

    我想定义一个concept可以检测类型是否T can be 结构化绑定 or not template
  • x:将 ViewModel 方法绑定到 DataTemplate 内的事件

    我基本上问同样的问题这个人 https stackoverflow com questions 10752448 binding to viewmodels property from a template 但在较新的背景下x Bind V
  • C 编程:带有数组的函数

    我正在尝试编写一个函数 该函数查找行为 4 列为 4 的二维数组中的最大值 其中二维数组填充有用户输入 我知道我的主要错误是函数中的数组 但我不确定它是什么 如果有人能够找到我出错的地方而不是编写新代码 我将不胜感激 除非我刚去南方 我的尝
  • 如何在当前 Visual Studio 主机内的 Visual Studio 扩展中调试使用 Roslyn 编译的代码?

    我有一个 Visual Studio 扩展 它使用 Roslyn 获取当前打开的解决方案中的项目 编译它并从中运行方法 程序员可以修改该项目 我已从当前 VisualStudioWorkspace 成功编译了 Visual Studio 扩
  • 为什么使用小于 32 位的整数?

    我总是喜欢使用最小尺寸的变量 这样效果就很好 但是如果我使用短字节整数而不是整数 并且内存是 32 位字可寻址 这真的会给我带来好处吗 编译器是否会做一些事情来增强内存使用 对于局部变量 它可能没有多大意义 但是在具有数千甚至数百万项的结构
  • 使用特定参数从 SQL 数据库填充组合框

    我在使用参数从 sql server 获取特定值时遇到问题 任何人都可以解释一下为什么它在 winfom 上工作但在 wpf 上不起作用以及我如何修复它 我的代码 private void UpdateItems COMBOBOX1 Ite
  • 当文件流没有新数据时如何防止fgets阻塞

    我有一个popen 执行的函数tail f sometextfile 只要文件流中有数据显然我就可以通过fgets 现在 如果没有新数据来自尾部 fgets 挂起 我试过ferror and feof 无济于事 我怎样才能确定fgets 当
  • 指针和内存范围

    我已经用 C 语言编程有一段时间了 但对 C 语言还是很陌生 有时我对 C 处理内存的方式感到困惑 考虑以下有效的 C 代码片段 const char string void where is this pointer variable l
  • 现代编译器是否优化乘以 1 和 -1

    如果我写 template
  • 如何确定 CultureInfo 实例是否支持拉丁字符

    是否可以确定是否CultureInfo http msdn microsoft com en us library system globalization cultureinfo aspx我正在使用的实例是否基于拉丁字符集 我相信你可以使
  • 使用 WGL 创建现代 OpenGL 上下文?

    我正在尝试使用 Windows 函数创建 OpenGL 上下文 现代版本 基本上代码就是 创建窗口类 注册班级 创建一个窗口 choose PIXELFORMATDESCRIPTOR并设置它 创建旧版 OpenGL 上下文 使上下文成为当前

随机推荐

  • 使用进度条上传文件,或从 Google Web Toolkit 访问 Html 5 File Api?

    我正在寻找一种使用自定义进度栏和谷歌网络工具包进行文件上传的方法 我不是在寻找显示自己的进度栏的插件 而是在寻找能够调用回调方法并通知其进度的插件 这样我就可以显示自己的进度栏 如果这是不可能的 那么我想知道如何访问 HTML5 文件 AP
  • 如何选择在sql中插入具有相同id的行?

    所以基本上我有一个名为 table 1 的表 ID Index STATUS TIME DESCRIPTION 1 15 pending 1 00 Started Pending 1 16 pending 1 05 still in req
  • 正则表达式匹配括号之间的内容

    我很难让它发挥作用 我有一个像这样的字符串 something 0 9 a z 我需要正则表达式或一种获取括号之间的每个匹配项并返回匹配数组的方法 例如 0 9 a z 我使用的正则表达式是 这似乎确实匹配正确的事情if只有one一组括号
  • 如何在使用 for-each 循环迭代时修改 Collection 而不会出现 ConcurrentModificationException? [复制]

    这个问题在这里已经有答案了 如果我在使用 for each 循环迭代集合时修改集合 它会给出ConcurrentModificationException 有什么解决方法吗 Use Iterator remove 这是在迭代期间修改集合的唯
  • 使用 mongodump 提取流星数据

    我会先说 除了一些 mongo 教程之外 我几乎没有编码知识 所以这可能是一个非常简单的答案 我正在尝试将流星项目中的数据提取到可以编辑的文本文件中 以前我刚刚安装了meteor 和Node js 但我安装了MongoDB 因为没有它我的c
  • 子类会继承私有字段吗?

    这是一道面试题 子类是否继承private 领域 我回答 否 因为我们无法使用 正常的 OOP 方式 访问它们 但面试官认为它们是继承的 因为我们可以间接或使用反射访问这些字段 并且它们仍然存在于对象中 回来后发现下面的一句话javadoc
  • 使用 JDBC 的小程序 - java.security.AccessControlException:访问被拒绝

    JDBC using Applet import javax swing JApplet JLabel JButton import java applet Applet import java awt Layout import java
  • 如何在C中使用scanf获取数组中的整数输入?

    我使用 scanf 获取多个整数输入并将其保存在数组中 while scanf d array i 1 输入整数由空格分隔 例如 12 345 132 123 我在另一篇文章中读到了这个解决方案 但问题是 while 循环没有终止 这个说法
  • 相同的 WSAPI v2.0 安全密钥可在 REST 客户端中使用,但与 curl 一起使用时会产生无效密钥错误

    在浏览器的 REST 客户端中 当我发布到此 URL 时 https rally1 rallydev com slm webservice v2 0 HierarchicalRequirement create key 123abc 使用此
  • C中的链表排序

    我正在为我的一个类编写一个简单的文件 这是一个简单的链接列表活动 我需要对链接列表进行排序 到目前为止 这是我的源代码 Simple list manipulation exercise 1 Create a list of integer
  • gdb - 使用管道进行调试

    假设我有两个名为blah and ret 我想调试blah接收输入的程序ret通过 I O 重定向进行编程 我该如何调试blah在以下情况下使用 gdb 进行编程 bash gt ret blah 首先 您可以运行程序并通过pid进行调试
  • 计算两个日期之间的差异

    我在txt文件中的日期是这样的 开始日期 011589 结束日期是 122390 如何使用 R 计算持续时间 我试过 mydata startdate as Date mydata startdate 但没用 这可以使用以下方法完成form
  • 将 CSV 附件导入 Google 表格

    我想做的是将 CSV 附件的内容输出到 Google Sheets 上 不知道我这样做是否正确 但我在网上找到了这个 运行了它 然后什么也没有发生 function importCSVFromGmail var threads GmailA
  • Matplotlib 散点图 - 删除白色填充

    我正在使用 matplotlib 在纬度经度坐标中绘制变量 问题是该图像不能包含轴或边框 我已经能够删除轴 但图像周围的白色填充必须完全删除 请参阅下面代码中的示例图像 https i stack imgur com nHCPF jpg 我
  • 如何使用MySQL DECIMAL?

    我不太了解 MySQL 的 DECIMAL 我需要该行能够包含 00 0001 到 99 9999 之间的任何数字 我将如何构建它以像这样工作 双列是not与 DECIMAL 列相同 并且您会遇到麻烦如果您对财务数据使用双列 DOUBLE
  • 为什么 AnsiSameText 不是 ANSI?

    从名字上看 人们会相信 SysUtils Delphi XE 中定义的 AnsiSameText 将接收 ANSI 字符串作为参数 但该函数的定义如下 function AnsiSameText const S1 S2 string Boo
  • 上传前验证文件大小

    我需要验证要上传到服务器的文件 上传之前必须进行验证 即在客户端完成验证 此任务应在 ASP NET MVC3 网页中完成 它还应该适用于所有浏览器 IE9 8 7 FF Chrome 我发现 IE 没有 FileReader API 我的
  • 无法在 Solr 中使用 ICUTokenizerFactory

    我正在尝试在 Solr 模式中使用 ICUTokenizerFactory 这就是我的定义field and fieldType
  • jQuery 拖动/使用 CSS 变换比例调整大小

    我正在应用 CSS 转换 以及浏览器特定的 webkit o 等 变换 矩阵 0 5 0 0 0 5 0 0 到一个 div 然后在该 div 的子级上使用 jQuery 的draggable 和 ressized 插件 我遇到的问题是 当
  • OnActionExecuting 在标准 asp.NET 中等效吗?

    是否有 MVC NET 的等效项OnActionExecuting在标准 asp net 中 我以为会是Page Load since OnActionExecuting每次执行操作 或加载页面 时都会调用 但当我尝试使用 Page Loa