Asp.net IIS集成请求处理管道--修改请求

Asp.net IIS集成请求处理管道--修改请求,asp.net,iis-7,httpmodule,Asp.net,Iis 7,Httpmodule,我想使用IIS7中的HttpModule在IIS集成请求处理管道模式下运行,来实现类似ISAPI过滤器的功能 目标是在Web服务器级别查看传入的请求,并将一些定制的HttpHeader注入到请求中(例如:HTTP\\u EAUTH\\u ID) 在以后的ASPX页面生命周期中,我应该能够将该变量用作 string eauthId = Request.ServerVariables["HTTP\_EAUTH\_ID"].ToString(); 因此,在Web服务器级别实现此模块,是否可以更改Se

我想使用IIS7中的HttpModule在IIS集成请求处理管道模式下运行,来实现类似ISAPI过滤器的功能

目标是在Web服务器级别查看传入的请求,并将一些定制的HttpHeader注入到请求中<代码>(例如:HTTP\\u EAUTH\\u ID)

在以后的ASPX页面生命周期中,我应该能够将该变量用作

string eauthId = Request.ServerVariables["HTTP\_EAUTH\_ID"].ToString();

因此,在Web服务器级别实现此模块,是否可以更改ServerVariables集合

我相信服务器变量列表只包含从浏览器发送到服务器的头。

我相信服务器变量列表只包含从浏览器发送到服务器的头。

属性是只读集合。所以,您不能直接修改它。我建议将您的自定义数据从httpmodule存储在(或全局应用程序对象或数据库)中,然后在aspx页面中读取该共享值

如果您仍要修改服务器变量,则本使用反射中提到了一种hack技术。

属性是只读集合。所以,您不能直接修改它。我建议将您的自定义数据从httpmodule存储在(或全局应用程序对象或数据库)中,然后在aspx页面中读取该共享值


如果您仍然想修改服务器变量,那么本文中提到了一种使用反射的黑客技术。

您将无法修改
HttpRequest.Headers
HttpRequest.ServerVariables
集合。但是,您可以将您的信息附加到以下任何一项:

HttpContext.Current.Items
HttpContext.Current.Response.Headers
不幸的是,
Request.Params、Request.QueryString、Request.Cookies、Request.Form
(以及您想到的任何其他地方)都是只读的

如果这是您计划安装到IIS 7中的HttpModule,我强烈建议您不要使用反射。考虑到通过web服务器的每个请求(可能)都会调用此代码,因此它需要非常快的速度,而反射不会切断它(除非您的用户很少)


祝您好运!

您将无法修改
HttpRequest.Headers
HttpRequest.ServerVariables
集合。但是,您将能够将您的信息附加到以下任何一个集合:

HttpContext.Current.Items
HttpContext.Current.Response.Headers
不幸的是,
Request.Params、Request.QueryString、Request.Cookies、Request.Form
(以及您想到的任何其他地方)都是只读的

如果这是您计划安装到IIS 7中的HttpModule,我强烈建议您不要使用反射。考虑到通过web服务器的每个请求(可能)都会调用此代码,因此它需要非常快的速度,而反射不会切断它(除非您的用户很少)

祝你好运