.Net Форма POST - PullRequest
       44

.Net Форма POST

1 голос
/ 12 октября 2008

У меня есть клиент, который во время тестирования дает мне противоречивую информацию. Я не думаю, что они лгут, но больше сбиты с толку. Итак, я хотел бы настроить простой аудит в своем приложении ASP.Net. В частности, именно тогда, когда вызывается любая страница, я хочу немедленно вставить строку Querystring и / или формы POST в таблицу журнала. Просто необработанные значения.

Querystring легко. Но, похоже, не существует способа получить необработанные данные формы POST без использования BinaryRead, и если я это сделаю, то позже я сам отвернусь от использования коллекции Request.Form.

Кто-нибудь знает способ обойти это?

РЕДАКТИРОВАТЬ: tvanfosson предложил Request.Params. Я искал что-то, что было бы проще в использовании (например, Request.Querystring, только для POST), но я думаю, что я мог бы так же легко пройтись по всем параметрам и создать строку name = value & и т. Д.).

Ответы [ 3 ]

3 голосов
/ 12 октября 2008

Вы можете создать собственный HttpModule для захвата всех запросов, сделанных к вашему приложению, так что вам не нужно трогать каждую страницу, и вы можете использовать его только во время тестирования, чтобы не снизить производительность в производственном процессе.

Примером реализации будет:

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
    }
}

Вам необходимо добавить модуль в ваш web.config

<httpModules>
    <add name="CustomModule" type="CustomModule"/>
</httpModules>
2 голосов
/ 12 октября 2008

Все данные формы должны быть в Request.Params . Вам нужно будет делать это на каждой странице, хотя или, возможно, использовать HttpModule.

[ПРАВКА] Если вы хотите получить параметры формы отдельно, используйте Request.Form вместе с Request.QueryString

1 голос
/ 12 октября 2008

Я бы порекомендовал реализовать и HttpHandler или HttpModule для этого типа сценария. Вы можете получить данные POST из события Page_Load, но реализация этой функции ведения журнала здесь не так удобна для обслуживания.

...