【发布时间】:2015-05-01 20:58:23
【问题描述】:
我最近将一些 AJAX 查询切换为使用 ashx 文件而不是 aspx,发现 Response.End 不再流行。在我现在看到的情况下,采购订单的提交由 ashx 处理。用户单击 PO 上的提交按钮,ashx 文件将时间和用户记录在数据库表中。具有当前用户数据(包括他们的主键)的对象存储在 Session 中,并由自定义 Profile Provider 记录在那里。我添加了IReadOnlySessionState 以便能够访问会话,但似乎除非访问了另一个.net 页面,否则配置文件提供程序不会运行并且会话没有值。 (通过单步执行代码进行验证。)
我尝试了IRequiresSessionState,但结果相同。
我假设 System.Web.UI.Page HttpHandler 会实例化自定义配置文件(如果尚未实例化),我需要将其添加到我的自定义 HttpHandler 中。
我简要查看了 HttpModules,但我认为这不是我想要的,因为它们会为每个请求加载。
【问题讨论】:
-
您是说您使用的是自定义配置文件提供程序吗?该提供者是否将数据放入会话中?!这似乎是一个 rube-goldberg 机器。
-
@JJS - 是的,是的。你说像 Rube Goldberg 这样的机器并不酷,哈哈。我可能是在 10 年前从一个经典的 asp 站点移植时写的。我怀疑我是这样做的,因为 Profile 似乎是放置该信息的地方,而 asp 应用程序使用 Session 来存储配置文件信息。回想起来,我可能应该使用 Profile 自定义属性,或者作为访问 Session 的自定义 Profile 上的一个函数。其中任何一个都可以解决在访问 Session 之前实例化 Profile 对象的问题。
-
Rube Goldberg 机器在工作时非常酷,但维护起来很麻烦。如果我们在 10 年前知道的时候知道今天,我们会以不同的方式做事。事后看来是 20/20。
标签: asp.net httphandler ashx profile-provider