2

当我的 ASP.NET 代码正在流式传输一个大文件时,它是否完全束缚了一个线程?换句话说,如果有 8 个人在下载大文件,而我只有 8 个线程可用,是否会不再处理请求?

无论如何,我需要找到一种保护大型静态文件的替代方法,最好是在用户获得授权后让 IIS 直接为其提供服务,以便使应用程序服务器不必处理 IIS、Nginx 等可以在不触及任何托管代码的情况下做得更好。

我相信 Nginx 允许这样做,如果您的应用程序在其响应中放置“X-Accel-Redirect”标头:http: //kovyrin.net/2006/11/01/nginx-x-accel-redirect-php-rails/。Apache 和 Lighttpd 具有相同的功能。

有什么建议吗?

4

1 回答 1

0

返回文件的 URL 是一个合适的解决方案。

您可以使用 asp.net 中的标准身份验证提供程序来防止拥有该 URL 的未经授权的用户也下载该文件。如果您打开runAllManagedModulesForAllRequests(请参阅http://www.iis.net/configreference/system.webserver/modules),当用户点击 URL 时将验证用户身份验证,如果他们被授权,他们将被允许访问该文件。

在任何一种情况下,下载都不会锁定线程,只会锁定执行。这就是maxConnections设置具有默认设置的原因4294967295。(见http://www.iis.net/configreference/system.applicationhost/sites/site/limits

于 2012-11-29T00:42:39.540 回答