Dotnet WebApi - 托管 Azure 应用服务中的上传错误(大文件)
Dotnet WebApi - Upload error (largefile) in hosted Azure App Service
首先 - 在本地,各种大小的文件都按预期工作。我使用一个大文件上传服务,它正在处理块。在控制器中,我使用以下属性来上传大文件:
[DisableFormValueModelBinding]
[DisableRequestSizeLimit]
api 托管在具有以下服务计划 (P3V2) 的 Azure 应用服务中
总计 840 个 ACU
14 GB 内存
Dv2 系列计算等效
284.41 EUR/Month(估计))-我认为这应该足够了。但是,在这个位置,当上传大于 2 GB 的文件时,我总是会收到“(failed)net::ERR_HTTP2_PROTOCOL_ERROR”。在 application insights 中没有列出任何例外情况。第一行的控制器日志不会被记录,所以我的假设是应用程序服务之前切断了请求 - 但为什么呢?我找不到任何信息来设置允许的最大 body 大小或其他信息。因此,必须可以在 Azure 服务应用程序上上传大于 2 GB 的文件。如何设置应用程序服务以提供更大的文件上传?
在您的应用程序 web.config 中验证文件的长度 ( maxRequestLength)。
在 web.config --> 标签中
添加以下代码,
<httpRuntime targetFramework="*.*.*" maxRequestLength="1073741824" >
在 标签中 --> 添加安全标签,
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="2147483648" />
</requestFiltering>
</security>
在 web.config(处理程序标记)中配置处理程序
<handlers>
<add name="httpPlatformHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified" />
</handlers>
<httpPlatform processPath="%DNX_PATH%" arguments="%DNX_ARGS%" forwardWindowsAuthToken="false" startupTimeLimit="3600" />
您可以通过发送具有较小块的 blob 来上传大文件。
请按照link参考。
所以我和 Azure 的人开会,他们说 linux 机器有限制。当请求高于 2GB 时,请求将在到达应用程序本身之前被阻止。这里还有另一个限制 - 如果请求花费的时间超过 230 秒,请求将 运行 超时...因此,如果您打算上传文件,那么建议使用 javascript客户端库将文件直接上传到 azure blob 存储并从那里开始。
这真的很烦人,但是你不能像在 k8s 或 iis 等中那样配置或更改这些限制
首先 - 在本地,各种大小的文件都按预期工作。我使用一个大文件上传服务,它正在处理块。在控制器中,我使用以下属性来上传大文件:
[DisableFormValueModelBinding]
[DisableRequestSizeLimit]
api 托管在具有以下服务计划 (P3V2) 的 Azure 应用服务中 总计 840 个 ACU 14 GB 内存 Dv2 系列计算等效 284.41 EUR/Month(估计))-我认为这应该足够了。但是,在这个位置,当上传大于 2 GB 的文件时,我总是会收到“(failed)net::ERR_HTTP2_PROTOCOL_ERROR”。在 application insights 中没有列出任何例外情况。第一行的控制器日志不会被记录,所以我的假设是应用程序服务之前切断了请求 - 但为什么呢?我找不到任何信息来设置允许的最大 body 大小或其他信息。因此,必须可以在 Azure 服务应用程序上上传大于 2 GB 的文件。如何设置应用程序服务以提供更大的文件上传?
在您的应用程序 web.config 中验证文件的长度 ( maxRequestLength)。
在 web.config -->
<httpRuntime targetFramework="*.*.*" maxRequestLength="1073741824" >
在
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="2147483648" />
</requestFiltering>
</security>
在 web.config(处理程序标记)中配置处理程序
<handlers>
<add name="httpPlatformHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified" />
</handlers>
<httpPlatform processPath="%DNX_PATH%" arguments="%DNX_ARGS%" forwardWindowsAuthToken="false" startupTimeLimit="3600" />
您可以通过发送具有较小块的 blob 来上传大文件。 请按照link参考。
所以我和 Azure 的人开会,他们说 linux 机器有限制。当请求高于 2GB 时,请求将在到达应用程序本身之前被阻止。这里还有另一个限制 - 如果请求花费的时间超过 230 秒,请求将 运行 超时...因此,如果您打算上传文件,那么建议使用 javascript客户端库将文件直接上传到 azure blob 存储并从那里开始。
这真的很烦人,但是你不能像在 k8s 或 iis 等中那样配置或更改这些限制