request.GetBufferedInputStream未启用搜索

时间:2015-11-25 23:10:30

标签: c# asp.net-mvc stream .net-4.5

在.NET 4.5之前,我使用request.InputStream来读取数据并将其保存到数据库中。但是,现在不使用" Classic"输入流读取机制,它使用缓冲输入流。

在模块中,当我尝试读取流时,我必须检查模式。但是我无法读取BufferedInputStream,因为它已经被读取并且它不可寻找。

基本上我在模块中有这个

public void Init(HttpApplication context)
{
    context.EndRequest += EndRequest;
}

private void EndRequest(object sender, EventArgs e)
{
    var application = (HttpApplication)sender;
    var request = application.Request;

    Stream requestInputStream = null;
    if (application.Request.ReadEntityBodyMode == ReadEntityBodyMode.Buffered)
    {
        // This is not readable...
        requestInputStream = request.GetBufferedInputStream();
    }
    else
    {
        requestInputStream = request.InputStream;
    }
}

我现在找到的唯一技巧是访问BeginRequest中的request.InputStream,然后在该点保存流。但是,我的流将永远保持经典模式;我相信这会破坏这个.NET 4.5缓冲输入流的目的。

现在有更好的方法来阅读这个BufferedInputStream吗?

(完整代码开源:RequestLoggerModule.cs

0 个答案:

没有答案