Pergunta

Eu tenho um cliente que, durante os testes, está me dando informações contraditórias. Eu não acho que eles estão mentindo, mas mais confuso. Então, eu gostaria de configurar alguma auditoria simples no meu aplicativo ASP.Net. Especificamente, certo quando qualquer página é chamado, eu quero imediatamente inserir os dados do formulário POST QueryString e / ou em uma tabela log. Apenas os valores brutos.

QueryString é fácil. Mas não parece ser uma maneira de obter a forma bruta POST'ed dados sem usar BinaryRead, e se eu fizer isso, então eu estragar-me para fora de usar a coleção Request.Form mais tarde.

Alguém sabe uma maneira de contornar isso?

EDIT: tvanfosson sugeriu Request.Params. Eu estava procurando por algo que era mais fácil de usar (como Request.Querystring, apenas para POST), mas eu acho que eu poderia facilmente percorrer todos params e construir uma série de name = value &, etc).

Foi útil?

Solução

Todos os dados do formulário deve estar em Pedido .Params . Você precisaria fazer isso em cada página, embora ou talvez usar um HttpModule.

[EDIT] Se você deseja obter os parâmetros de formulário usar separadamente Request.Form , juntamente com Request.QueryString

Outras dicas

Você pode criar um personalizado HttpModule para capturar todos os pedidos feitos para a sua aplicação, assim você não precisa tocar cada página e você pode usá-lo apenas durante os testes apenas para não abrandar o desempenho na produção.

A implementação de exemplo seria:

public class CustomModule : IHttpModule 
{
    public void Init(HttpApplication context)
    {
        context.EndRequest += new EventHandler(context_BeginRequest);
    }

    private void context_BeginRequest(object sender, EventArgs e)
    {
        HttpContext context = ((HttpApplication)sender).Context;
        // you can use the context.Request here to send it to the database or a log file
    }
}

Você precisa adicionar o módulo para o seu web.config

<httpModules>
    <add name="CustomModule" type="CustomModule"/>
</httpModules>

Eu recomendaria implementação e HttpHandler ou um HttpModule para este tipo de cenário. Você pode chegar aos dados POST a partir do evento Page_Load mas implementar este recurso de log aqui não é tão sustentável.

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