有没有办法使用System.Net.Http.HttpClient将大文件推送到远程服务器

时间:2014-06-05 16:29:36

标签: c# asp.net dotnet-httpclient

我尝试使用System.Net.Http.HttpClient将50 MB文件推送到远程服务器:

private async void Transfer_Product_Upgrade_Package(object sender, RoutedEventArgs e)
{
    await UploadFileAsync();
}

async Task UploadFileAsync()
{
    string filename = @"C:\AccountView\AccountViewPublish\ProductPackage.zip";

    Uri uri = new Uri("http://localhost:3748/api/UploadProductPackage/5");

    using (var stream = File.OpenRead(filename))
    {
        var client = new HttpClient();
        var response = await client.PostAsync(uri, new StreamContent(stream));
        response.EnsureSuccessStatusCode();
    }
}

我甚至没有点击目标服务器就得到了这个回复:

响应状态代码不表示成功:413(请求实体太大)。

正在使用完全相同的代码传输较小的文件。

有没有办法处理更大的文件?

1 个答案:

答案 0 :(得分:3)

默认的最大IIS 7上传文件大小约为28mb。对于更大的文件大小,您需要使用WebConfig配置IIS 7以允许更大的大小:

<system.webServer>
  <security>
    <requestFiltering>
      <requestLimits maxAllowedContentLength="2147483648" />
    </requestFiltering>
  </security>
</system.webServer>

此外,ASP.NET运行时还有其他限制。你可以在这里改变:

<system.web>
  <httpRuntime maxRequestLength="2097152" />
</system.web>

查看此link了解详情。