问题标签 [ihttpmodule]

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

error-handling - IHttpModule 实现的错误处理在 IIS6 中不起作用,在 IIS5.1 中起作用

我通过使用 IHttpModule 来实现常见的错误处理。在我的机器上本地使用 WinXP,它就像一个魅力。一旦我在我们的测试服务器(即 W2003)上上传解决方案,它就不起作用了。一旦发生错误,它就会直接显示在 asp.net 错误页面中。它不使用我的错误模块进行处理。

欢迎任何建议....X。

0 投票
1 回答
757 浏览

asp.net-mvc - 如何从 IHttpModule 获取数据到 ASP.NET MVC RequestContext?

我有一个自定义的 IHttpModule 进行身份验证(对 Facebook、Myspace 等)。它引发了一个可以在 HttpApplication 实例中处理的事件,其中包含有关用户的详细信息。这很像 FormsAuthenticationModule 引发的 OnAuthenticate 事件。

从 HttpApplication 类中,我应该将获得的这些信息放在哪里,以便它可用于 ASP.NET MVC 管道?我曾经把它放在 Context.Items 字典中。但似乎与(更友好的)HttpContextBase 我想把它放在那里以便于模拟/注入并且我没有在我的控制器中使用 HttpContext.Current 。

那么,基本上,我如何最好地将数据从 IHttpModule 获取到 MVC 上下文中?快速浏览一下,我能想到的最好方法是创建一个自定义 IControllerFactory 以从 HttpContext 中提取数据并将其添加到 RequestContext。我回答了我自己的问题吗?有没有侵入性较小的方式(比如我可以处理的事件)?

0 投票
2 回答
5354 浏览

asp.net - 在 Global.asax 上使用 IHttpModule

我被赋予了重写我们的异常处理系统的激动人心的任务。虽然我会声明从应用程序范围的角度处理异常不是我们想要的,但通常情况下,当我们的团队人手不足时,我们需要推出大量工作,这是不可避免的,所以请不要燃烧此处异常处理的全球化解决方案:)

我已经很好地寻找存在哪些常见的解决方案。目前,我们使用 Global.asax 和 Application_Error 事件来执行 Server.GetLastError() ,它被置于会话状态,然后调用重定向到另一个页面,然后检索会话数据并以人类可读的格式输出。重定向还调用一个 sproc,它会仔细审核错误信息,这些信息是 a) 通过电子邮件发送给开发人员和 b) 从只有开发人员可以查看的网页查看。

我见过的做事的新方法是使用 IHttpModule 接口,使用 App_Code 中的一个类来做一些事情(这是我的快速实现)

我的问题是,与使用 Global.asax 事件相比,此解决方案有什么好处?此外,将数据交给错误页面的最佳方式是什么?

编辑:顺便说一句,上面的代码确实有效;)

编辑:另外,HttpModule 是如何在幕后工作的?它只是在应用程序启动时将错误事件注册到该特定功能吗?

更新:

经过进一步调查,在使用 IHttpModule 接口时,获取会话数据似乎非常非常混乱。我认为 MS 的 HttpModule 还不够成熟,无法在我们的特定场景中使用——除非有特定于会话数据的事件,否则我们无法使用它。

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 投票
3 回答
3795 浏览

asp.net - How2:在 HttpModule 中挂钩什么事件以将 js 链接放入 head 元素

我想让 HttpModule 从一些简单的配置数据中注入 javascripts、css 链接到 HEAD 元素。我不确定我应该挂钩哪个事件?

目前我使用
- context.PreRequestHandlerExecute 动态更改母版页
- Context.BeginRequest 用于 SEO 优化

HTTPModule 事件执行顺序有一些帮助吗?

感谢您的任何提示。干杯,X。

0 投票
3 回答
3041 浏览

c# - 在特定位置禁用 HttpModule

我知道这里已经问过这个问题,但是答案(使用处理程序代替)并不能解决问题,因为我使用的是不实现 IHttpHandler 的第三方组件。

那么,再一次,有没有办法在某个请求上加载/卸载 HttpModule?

编辑:我忘了提到我们正在使用 .NET 2.0。我很抱歉忘记了它。

0 投票
3 回答
993 浏览

asp.net - IHttpModule 中的 StatusCode 总是 200?

我有一个自定义IHttpModule处理所有可用事件并将其记录HttpContext.Current.Response.StatusCode到文件中。

Myweb.config中不包含任何其他模块,<httpModules>因此所有错误都会被提升到浏览器。

尽管浏览器显示 404,但日志文件中充满了 200 个(正常)条目,而不是单个 404。

我错过了什么?


更新

以结尾的 Url在事件中.aspx确实有一个404StatusCode ,但是以结尾的 Url例如在所有事件中都显示 StatusCode?!PreSendRequestHeaders.pdf200

0 投票
15 回答
102357 浏览

asp.net-mvc - 在 ASP.NET MVC 和 IIS7 中记录原始 HTTP 请求/响应

我正在编写一个 Web 服务(使用 ASP.NET MVC),出于支持目的,我们希望能够以尽可能接近原始的在线格式(即包括 HTTP方法、路径、所有标题和正文)到数据库中。

我不确定如何以最不“损坏”的方式获取这些数据。HttpRequest我可以通过检查对象的所有属性并从中构建一个字符串(对于响应也是如此)来重构我认为请求的样子,但我真的很想掌握实际的请求/响应数据在电线上发送。

我很乐意使用任何拦截机制,例如过滤器、模块等,并且解决方案可以特定于 IIS7。但是,我更愿意将其仅保留在托管代码中。

有什么建议吗?

编辑:我注意到HttpRequest有一种SaveAs方法可以将请求保存到磁盘,但这会使用无法公开访问的内部帮助方法负载从内部状态重建请求(这就是为什么这不允许保存到用户提供的流我不知道)。所以看起来我必须尽我所能从对象中重建请求/响应文本......呻吟。

编辑 2:请注意,我说的是整个请求,包括方法、路径、标头等。当前响应仅查看不包含此信息的主体流。

编辑3:没有人在这里阅读问题吗?到目前为止,有五个答案,但没有一个甚至暗示了一种获取整个原始在线请求的方法。是的,我知道我可以从请求对象中捕获输出流、标头和 URL 以及所有这些内容。我已经在问题中说过,请参阅:

我可以通过检查 HttpRequest 对象的所有属性并从中构建一个字符串(对于响应也是如此)来重构我认为请求的样子,但我真的很想掌握实际的请求/响应数据这是通过网络发送的。

如果您知道完整的原始数据(包括标头、url、http 方法等)根本无法检索,那么知道这将很有用。同样,如果您知道如何以原始格式获取所有信息(是的,我的意思仍然是包括标头、url、http 方法等)而无需重建它,这就是我所要求的,那么这将非常有用。但是告诉我可以从HttpRequest/HttpResponse对象重建它是没有用的。我知道。我已经说过了。


请注意:在有人开始说这是一个坏主意或会限制可伸缩性等之前,我们还将在分布式环境中实现节流、顺序传递和反重放机制,因此无论如何都需要数据库日志记录。我不是在寻找关于这是否是一个好主意的讨论,我在寻找如何做到这一点。

0 投票
3 回答
1021 浏览

c# - 我的 UrlRewrite IHttpModule 删除了我的第二个 QueryString

我有一个可以正常工作的自定义 url 重写器功能。但是当我要在我的 url 上使用第二个查询字符串时,会删除第二个查询字符串。

我的友好网址:/gallery/view-ablum/?q=1 我的代码: Page.aspx?id=22&q=1 ,当我通过 RewritePath(...) 从我的真实页面中删除 &q=1 时。我现在不知道谁来解决这个问题,我无法弄清楚。

IHttpModule 有 IsPostBack 吗?

0 投票
1 回答
1336 浏览

c# - ASP.NET Webforms IHttpModule 单例

我有一个类在网站的单独程序集中实现 IHttpModule。模块实现拦截请求并重写网站的 url。

映射存储在具有请求 url 和目标 url 的类中。

来自http://devhood.com/Tutorials/tutorial_details.aspx?tutorial_id=486的第二个示例 MTSingleton 是否适合创建映射列表?模块实现中是否有更好的方法?

编辑:我的错,这是针对 IIS 6.0 和 .NET 3.5 SP1