Интегрированный конвейер обработки запросов IIS Изменить запрос

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

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

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

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

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


person kudlur    schedule 13.09.2008    source источник


Ответы (3)


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

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

person Gulzar Nazim    schedule 13.09.2008

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

person Joel Martinez    schedule 13.09.2008

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

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

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

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

Удачи!

person Tyler    schedule 14.09.2008