Мне нужно изменить содержимое определенных HttpRequests (строки подключения SSAS) в IIS. По сути, мне нужно добавить элемент в SOAP, содержащийся в запросе.
До сих пор мой подход заключался в добавлении фильтра в запрос HttpRequest и внесении изменений в метод чтения фильтра. Однако, насколько я могу судить, Read никогда не выполняется.
Насколько я понимаю, Request.Filter заключается в том, что он читается, когда 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
}
}