Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 来自HTTPPostedFileBase的MVC/WebApi流_C#_Asp.net Mvc_Gembox Spreadsheet_Asp.net Boilerplate - Fatal编程技术网

C# 来自HTTPPostedFileBase的MVC/WebApi流

C# 来自HTTPPostedFileBase的MVC/WebApi流,c#,asp.net-mvc,gembox-spreadsheet,asp.net-boilerplate,C#,Asp.net Mvc,Gembox Spreadsheet,Asp.net Boilerplate,我正在尝试将流从HttpPostedFileBase传递到服务方法,而不保存到磁盘 //Controller Action [HttpPost] public void Import() { if (Request.Files.Count == 0) return new HttpStatusCodeResult(404); var file = Request.Files[0]; _department

我正在尝试将流从HttpPostedFileBase传递到服务方法,而不保存到磁盘

//Controller Action
[HttpPost]
    public void Import()
    {
        if (Request.Files.Count == 0)
            return new HttpStatusCodeResult(404);

        var file = Request.Files[0];

        _departmentAppService.Import(file.InputStream);
    }

//Service Method
public string Import(Stream stream)
    {
        var excelFile = ExcelFile.Load(stream, LoadOptions.CsvDefault);
        var worksheet = excelFile.Worksheets[0];
        var jsonString = worksheet.ToJsonString();
        return jsonString;
    }

对象“System.Web.HttpInputStream”上的属性访问器“ReadTimeout”出现错误,引发了以下异常:“此流不支持超时”。“在将流传递给方法时引发。有一种惯用的方法可以做到这一点吗?

我无法重现此问题,因此无法检查您获得的堆栈跟踪,但我认为您超时了,因为您正在处理大型CSV文件,在这种情况下,我会尝试增加web.config中的“executionTimeout”

您还可以尝试使用临时内存流来存储上载的文件,如下所示:

var file = Request.Files[0];
using (var tempStream = new MemoryStream())
{
    file.InputStream.CopyTo(tempStream);
    tempStream.Position = 0;
    _departmentAppService.Import(tempStream);
}

希望这能有所帮助。

谢谢您的回复。我仍然收到相同的错误:对象“System.IO.MemoryStream”上的属性访问器“ReadTimeout”引发了以下异常:“此流不支持超时”。堆栈跟踪是:在System.IO.stream.get\u ReadTimeout()文件为1KB。您还有其他建议吗?很遗憾,没有,但是你能暂时上传一个VS测试项目到某个地方,它会重现你的问题,这样我就可以调查它了吗?谢谢你的帮助。经过数小时的测试,这似乎与我们正在使用的Asp.Net锅炉板框架有关。当我们更新到最新版本()并更改了大量代码以匹配时,这个错误似乎消失了。我非常感谢你的帮助。