问题标签 [ihttphandler]

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 回答
1579 浏览

c# - ASP.net 中的静态文件和身份验证

假设我在 IIS7 中有一个虚拟文件夹 /topFolder/,在该文件夹中可以有任何可以在浏览器中显示的文件(xml、html、swf、doc 等 - 从 IIS 角度来看通常是“非托管”资源)。在授予打开文件夹下任何文件的请求权限之前,我需要检查一些会话变量,以查看用户是否拥有相关子文件夹和文件的“许可证”。

我尝试使用 IHttpModule 和 IReadOnlySessionState 接口实现一个模块,但是当文件是“静态”而不是 IIS 管理(如 aspx、ashx 等)时,AcquireRequestState 事件中的 Session 始终为空。

如果我使用自定义 HttpHandler,我会得到会话,但我还需要实现内容如何发送到响应。编辑:由于用户没有下载文件,我只希望 IIS 像使用它的 StaticFileModule 一样提供文件。Handler/Module 应该是一个 StaticFileModuleWithAuthorizationHook...

所以我真的想做以下事情: 1. 对于请求 /topFolder/* :检查会话和许可证等 a)如果可以,继续提供文件 b)如果不可以,中断请求,或者只是发送 FORBIDDEN 作为响应。

希望有人可以提供帮助。

0 投票
2 回答
2108 浏览

c# - HttpHandler 实例和 HttpApplication 对象 - 后者...?

一本书显示了一个示例,其中(使用 IIS7 时)配置了以下模块,以便它可以被运行在网站上的任何 Web 应用程序(甚至非 asp.net 应用程序)使用。但:

  1. 如果为非 asp.net 应用程序调用此模块,那么如何或为什么仍会创建 HttpApplication 对象,因为非 asp.net 应用程序不在 CLR 的上下文中运行(因此 Asp.Net 运行时也不会)不跑)?

  2. 假设HttpApplication对象也是为非 asp.net 应用程序创建的,那么为什么 Init() 事件处理程序中的代码必须检查HttpApplication对象是否实际存在?为什么它不存在?这不是 HttpApplication实际实例化 Http 模块实例的对象吗?

这是Http处理程序:



0 投票
2 回答
372 浏览

.net - 在 IHttpHandler 中访问原始 HTTP 请求包

我正在尝试编写一个 IHttpHandler,它可以处理来自 Windows Media Player/Silverlight 的流媒体请求。这意味着响应这样的原始 HTTP 请求(取自协议文档)

当我进入 ProcessRequest 方法时, context.Request.Headers 集合似乎没有公开 Pragma 值。此外,它永远无法真正做到,因为有两行具有相同的键(Pragma)!

我假设如果我能得到原始数据包,我可以手动解析它们。

也就是说,接下来我要做的是构造一个 HttpWebRequest 类型的辅助请求。这也包含一个类似的字典,我希望它也无法接受两个相同的编译指示值而不覆盖另一个。

我错过了什么吗?

0 投票
2 回答
2419 浏览

c# - 通过 HttpContext 发送文件会导致浏览器挂起

我正在使用 HttpHandler 向用户发送文件。在所有浏览器上,至少查看/下载文件一次后,后续查看/下载的浏览器/应用程序会挂起。这是代码:

我读过调用 Response.Close() 和 Response.End() 不是一个好主意?已经尝试了离开和移除,它仍然会发生。

编辑:

TransmitFile 似乎存在已知问题。更详尽的解释见: http ://www.improve.dk/blog/2008/03/29/response-transmitfile-close-will-kill-your-application

我删除了 TransmitFile 并更改为 WriteFile,它现在可以正常工作了。

0 投票
1 回答
833 浏览

asp.net - 将 XMLDataSource 绑定到 HTTP 处理程序

我有一些动态生成的 XML 数据将被少数消费者使用(一个 ASPX 页面、一个 flash 文件,也许还有另一个)。

我已将其实现为自定义处理程序。我在处理程序中构造 XML 并使用 response.write 将其输出。

现在,如果我将 XMLDataSource 的 DataFile 属性设置为处理程序,它会尝试逐字读取 ashx 文件,而不是通过 HTTP 调用它。

有什么建议吗?

0 投票
1 回答
630 浏览

asp.net - IHttpHandler 发布到表单

是否可以从 ASP.NET 中的纯代码发布到表单?基本上我需要模拟一个 Response.Redirect() 但使用 POST 而不是 GET 来模拟,并且还设置了几个请求参数。这一切都发生在 HTTP 处理程序的 ProcessRequest 方法中。

注意:我意识到 Response.Redirect 真的只是将 http 302 项目移动代码扔回浏览器,我猜上述是不可能的,并且有更好的方法来做我所说的使用单独的页面和一个将操作设置为预期目标的表单。如果 HttpContext 有一些我不知道的神秘方法,那就太棒了。

编辑:

好的,所以想出了一个解决方法,基本上是 Response.Write() 从 IHttpHandler 处理一堆 html 和 javascript。然后,它会执行 post 并模拟有一个中间页面来执行 post(但在处理程序中保留尽可能多的代码)。

0 投票
4 回答
13672 浏览

c# - 来自 HttpHandler 的图像不会缓存在浏览器中

我正在使用 IHttpHandler 从数据库中提供图像。相关代码在这里:

问题是浏览器不会缓存图像,大概是因为我没有在响应标头中指示正确的内容。我认为 HttpCachePolicy 属性上调用方法的部分会强制浏览器保留图像,但事实并非如此。我认为“正确”的事情是处理程序返回没有图像的 304 状态代码,对吗?如何使用 IHttpHandler 实现这一点?

编辑:

根据最佳答案,我运行了这段代码,它完全解决了问题。是的,它需要一些重构,但它通常展示了我所追求的。相关部分:

0 投票
2 回答
520 浏览

asp.net - 用于在 IE 中产生 stackoverflow 的图像的 IHttpHandler

我有一个图像目录,该目录位于我需要提供给用户的 Web 应用程序上下文之外。目前我正在使用 IHttpHandler 来提供图像并使用一些 javascript 在一组图像中导航(导航现在是原始的)。我遵循了使用 IHttpHandler 密切提供图像的示例,但是当我在 Firefox 中查看图像时,浏览器挂起,当我在 IE 中查看时,我得到一个“第 0 行的堆栈溢出”。

IHttpHandler 的代码

这是调用上面定义的 IHttpHandler 的 javascript 代码:

最后是作为“占位符”的 img 标签:

我对为什么 javascript 似乎失去控制感到困惑......

0 投票
3 回答
42916 浏览

asp.net - ASP.NET:如何从处理程序访问 Session?

我正在尝试将一些值从处理程序页面存储在Session中,然后再重定向到 WebForms 页面,这将获取Session值并预填充 WebForm:

除了context.Session对象为空。

如何从处理程序访问会话状态?

0 投票
1 回答
1709 浏览

.net - web.config 上的 ASP.NET HttpHandlers 和 scriptProcessor 路径

我在我的 web.config 上定义了 http 处理程序:

scriptProcessor 指向Framework64文件夹,因为运行它的服务器是 64 位的。但是,我们的开发机器是32位的。这意味着除非我签出 web.config 并将 Framework64 更改为 Framework,否则处理程序不会运行

有没有办法编写它以便它在任何机器上运行?32位和64位?可以提供帮助的环境变量或 MSBuild 脚本?