Интегрированный конвейер обработки запросов IIS - изменение запроса - PullRequest
0 голосов
/ 13 сентября 2008

Я хочу реализовать функцию, подобную фильтру ISAPI, с использованием HttpModule в IIS7, работающем в режиме конвейера интегрированной обработки запросов IIS.

Цель состоит в том, чтобы просмотреть входящий запрос на уровне веб-сервера и внедрить в него несколько пользовательских HttpHeaders. (for ex: HTTP\_EAUTH\_ID)

А позже в жизненном цикле страницы ASPX я смогу использовать эту переменную как

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

Итак, реализуя этот модуль на уровне веб-сервера, можно ли изменить коллекцию ServerVariables ??

Ответы [ 3 ]

3 голосов
/ 13 сентября 2008

HttpRequest.ServerVariables Свойство доступно только для чтения. Таким образом, вы не можете напрямую изменить это. Я бы предложил сохранить ваши пользовательские данные в httpcontext (или глобальном объекте приложения или вашей базе данных) из вашего httpmodule, а затем прочитать это общее значение на странице aspx.

Если вы все еще хотите изменить переменные сервера, в этом потоке, упомянутом в , используется метод взлома с использованием Reflection.

0 голосов
/ 14 сентября 2008

Вы не сможете изменить коллекцию HttpRequest.Headers или HttpRequest.ServerVariables. Однако вы сможете прикрепить вашу информацию к любому из:

HttpContext.Current.Items
HttpContext.Current.Response.Headers

К сожалению, Request.Params, Request.QueryString, Request.Cookies, Request.Form (и почти в любом другом месте, где вы могли бы подумать о том, что его начинать, доступно только для чтения.

Я бы настоятельно рекомендовал не использовать рефлексию, если это HttpModule, который вы планируете установить в IIS 7 . Учитывая, что этот код будет вызываться (потенциально) для каждого запроса, проходящего через веб-сервер, он должен быть очень быстрым, и рефлексия просто не собирается его сокращать (если у вас мало пользователей).

Удачи!

0 голосов
/ 13 сентября 2008

Я считаю, что список переменных сервера содержит только заголовки, отправленные из браузера на сервер.

...