HttpRequest.InputStream在哪里读取?

时间:2015-11-30 10:53:04

标签: c# asp.net api streamreader

我有几个应用程序托管在同一个Web服务器上,并且由于缺乏更好的描述,它们会在短时间内暂停。我应该指出,在这个服务器上我没有看到内存或CPU峰值,磁盘延迟也不是问题。

每个应用程序的工作方式可能略有不同,但显示问题的一个简洁示例是:

public partial class Listener : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        Context.Response.ContentType = "text/xml";

        if (Request.ServerVariables["REQUEST_METHOD"] != "POST")
        {
            //...
            Response.Write(Tools.WrapError("Request type was not POST - Page Loaded in browser?"));
            return;
        }

        try
        {
            if (Request.InputStream.Length > 0)
            {
                StreamReader sr = new StreamReader(Request.InputStream);
                string content = sr.ReadToEnd();

... and so on...

我看到的问题是读取流最多需要10秒,读取20-50个字节。

当发生这种情况时,我看到各种应用程序的行为非常相似,所以我的问题是......

  1. 'Request.InputStream'在哪里?我是从RAM中读取的,还是直接从网络读取的?

  2. 我这样做的方式是否存在根本性的错误?我不认为我,因为大部分时间这个过程只需要几毫秒,正如我所说,一些应用程序略有不同。 例如,这个应用程序是一个简单的网页,但另一个应用程序使用'xmlDoc.Load(Context.Request.InputStream);'实现IHttpHandler接口。阅读输入流。

0 个答案:

没有答案