Действительно ли возможно изменить содержание HttpRequest POST в IIS HttpModule?

Я должен изменить содержание определенного HttpRequests (строки подключения SSAS) в IIS. В основном я должен добавить элемент к SOAP, содержавшемуся в запросе.

Мой подход до сих пор должен был добавить Фильтр к HttpRequest и выполнить изменение в методе Read фильтра. Насколько я могу сказать, тем не менее, что Read никогда не выполняется.

Мое понимание Запроса. Фильтр - то, что это читается из того, когда IIS обрабатывает запрос, таким образом, IIS должен видеть мой измененный Запрос.

То, что я пытаюсь сделать, на самом деле возможное использование HttpModule и моего подхода Фильтра корректно?

Если так, что заставило бы Read не быть пораженным?

Вот упрощенная версия моего кода:


public class CustomHttpModule : IHttpModule {
    private HttpApplication app;
    public string ModuleName {
        get { return "CustomHttpModule"; }
    }
    public void Init(HttpApplication context) {
        app = context;
        context.PreRequestHandlerExecute += new EventHandler(context_PreRequestHandlerExecute);
    }
    void context_PreRequestHandlerExecute(object sender, EventArgs e) {
        var request = app.Context.Request;
        request.Filter = new CustomHttpFilter(request.Filter);
    }
}

public class CustomHttpFilter : Stream {
    private Stream outputStream;
    public CustomHttpFilter(Stream outputFilter) {
        outputStream = outputFilter;
    }
    public override int Read(byte[] buffer, int offset, int count) {
        // read and make the necessary changes
    }
}
7
задан Adam 17 June 2010 в 04:54
поделиться

1 ответ

Я не считают, что можно изменить запрос с помощью модуля http, однако можно изменить ответ . Объект HttpRequest в основном доступен только для чтения, поэтому он обычно неизменяем в любом контексте, а не только из модуля.

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

0
ответ дан 7 December 2019 в 16:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: