c# - FileStream.ReadTimeout' 在 C# MVC 中引发了“System.InvalidOperationException”类型的异常
问题描述
我正在尝试将文件发送到公共 IP。它在文件大小较小但我想发送较大的 .BAK 文件时工作。虽然我试图发送少于 20-30 MB 的 .BAK 文件,但它的作品但不超过 30MB。
我试过:- 在 Web.config
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="2147483648" />
</requestFiltering>
</security>
</system.webServer>
//this also tried
<system.web>
<httpRuntime maxRequestLength="2097152" />
<compilation>
<assemblies>
<add assembly="System.Web.Mvc, Version=5.2.7.0, Culture=neutral, PublicKeyToken=31BF3856AD324E38" />
</assemblies>
</compilation>
</system.web>
- 我尝试增加 IIS 中的最大上传文件大小
string publicAPI = "https://localhost:44350/Upload/";
var directory = new DirectoryInfo("D:\\Database");
var fileName = (from f in directory.GetFiles()
orderby f.LastWriteTime descending
select f).First();
Stream fileStream = System.IO.File.OpenRead(fileName.FullName); // here is error:ReadTimeout = 'fileStream.ReadTimeout' threw an exception of type 'System.InvalidOperationException'
try
{
using (var client = new HttpClient())
{
using (var formData = new MultipartFormDataContent())
{
formData.Add(new StreamContent(fileStream), "Mytic", fileName.Name);
var response = client.PostAsync(publicAPI, formData).Result;
if (response.IsSuccessStatusCode )
{}
else
{}
}
}
}
我在 fileStream( error: ReadTimeout = 'fileStream.ReadTimeout' throwed an exception of type 'System.InvalidOperationException ') 中遇到错误。我如何读取大文件(.BAK)?
解决方案
对您的代码进行了一些更改。让我知道这个是否奏效。
string publicAPI = "https://localhost:44350/Upload/";
var directory = new DirectoryInfo("D:\\Database");
var fileName = (from f in directory.GetFiles()
orderby f.LastWriteTime descending
select f).First();
Stream fileStream = System.IO.File.OpenRead(fileName.FullName); // here is error:ReadTimeout = 'fileStream.ReadTimeout' threw an exception of type 'System.InvalidOperationException'
try
{
HttpClientHandler handler = new HttpClientHandler();
handler.MaxRequestContentBufferSize = 50000*1024;
using (var client = new HttpClient(handler))
{
using (var formData = new MultipartFormDataContent())
{
formData.Add(new StreamContent(fileStream), "Mytic", fileName.Name);
var response = client.PostAsync(publicAPI, formData).Result;
if (response.IsSuccessStatusCode)
{ }
else
{ }
}
}
}
catch (Exception ex)
{
}
在接收端,我将请求长度增加到 700 mb。我测试了我可以上传大文件。下面是我的网络配置。尝试增加请求长度,如下所示。
推荐阅读
- javascript - 如果位置的“id”有空间,角度数据图不会填充正确的颜色
- sql - 计算特定课程的平均时间
- vba - 如何设置列表框的默认选择并通过按键选择项目?
- r - 如何将相同的函数应用/循环到 R 中的一组相似对象
- python - 进程以退出代码 -1073741819 (0xC0000005) 完成我该如何解决这个问题
- r - 从 0:10 在 r 中线性排列值
- java - #Tablesaw #Java 导出为 csv 时,表被缩减为仅列表的最后一个元素
- c# - How do I get just the Major part of version inside AfterBuild target
- arrays - 在 Ruby 中使用数组初始化方法
- c++ - C++ 最轻量级的延迟函数调用方法