Pipeline de processamento de solicitação integrado do IIS – Modificar solicitação

StackOverflow https://stackoverflow.com/questions/60672

  •  09-06-2019
  •  | 
  •  

Pergunta

Desejo implementar um recurso semelhante a um filtro ISAPI usando HttpModule no IIS7 em execução no modo IIS Integrated Request Processing Pipeline.

O objetivo é observar a solicitação recebida no nível do servidor Web e injetar alguns HttpHeaders personalizados na solicitação. (for ex: HTTP\_EAUTH\_ID)

E mais tarde no ciclo de vida de uma página ASPX, devo ser capaz de usar essa variável como

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

Então implementando este módulo no nível do Servidor Web, é possível alterar a coleção ServerVariables ??

Foi útil?

Solução

HttpRequest.ServerVariables A propriedade é uma coleção somente leitura.Portanto, você não pode modificar isso diretamente.Eu sugeriria armazenar seus dados personalizados em contexto http (ou objeto de aplicativo global ou seu banco de dados) do seu httpmodule e depois lendo esse valor compartilhado na página aspx.

Se você ainda deseja modificar as variáveis ​​do servidor, existe uma técnica de hack mencionada neste fio usando Reflexão.

Outras dicas

Acredito que a lista de variáveis ​​do servidor contém apenas os cabeçalhos enviados do navegador para o servidor.

Você não poderá modificar o HttpRequest.Headers ou o HttpRequest.ServerVariables coleção.No entanto, você poderá anexar suas informações a qualquer um dos seguintes:

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

Infelizmente, Request.Params, Request.QueryString, Request.Cookies, Request.Form (e quase qualquer outro lugar que você pensaria em preenchê-lo é somente leitura.

Eu desaconselho fortemente o uso de reflexão se este for um HttpModule que você está planejando instalar no IIS 7.Dado que esse código será chamado para (potencialmente) todas as solicitações que passam pelo servidor web, ele precisará ser muito rápido e a reflexão simplesmente não será suficiente (a menos que você tenha poucos usuários).

Boa sorte!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top