none
HttpRequest.InputStream卡住 RRS feed

  • 问题

  • 用流上传文件

    前台代码:js

    var xhr = new XMLHttpRequest();

    var packet = file.slice(start, end);

    xhr.send(packet);

    会开3个上传的线程

    后台代码:用的ashx

    public class Upload : IHttpHandler, IRequiresSessionState

    {

        public void ProcessRequest(HttpContext context)
        {

            HttpRequest request = context.Request;

            string fileName = request.QueryString["fileName"];

             Byte[] buffer = null;

             buffer = new Byte[request.InputStream.Length];

        }

    }

    当后台用ip访问时, 后台没有任何问题, 也不会卡

    但换成域名访问时,前台如果一个一个文件请求,也不会有问题, 如果同时3个请求一起发的话,因为IRequiresSessionState的关系,应该会排队执行,但执行的请求,走到request.inputStream的时候 就会卡住,一直没有响应。

    如果把IRequiresSessionState 改成IReadOnlySessionState 又一切正常

    有大大知道这是什么原因吗?

    2020年3月6日 5:39

全部回复

  • 你好,

    据我所知, IRequiresSessionState 和IReadOnlySessionState 的区别是IRequiresSessionState的实现将为HTTPHandler提供读和写操作,而IReadOnlySessionState将仅提供只读访问权限。

    读写的话会比只读耗费更多的资源,并且可能会触发多次写入的错误。我觉得这个就是原因。


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2020年3月10日 2:01