保护大型静态文件,而不使用IIS占用ASP.Net线程

时间:2012-08-25 09:33:29

标签: asp.net iis download authorization static-files

虽然我的ASP.NET代码正在流式传输一个大文件,但它是否完全捆绑了一个线程?换句话说,如果8个人正在下载大文件并且我只有8个线程可用,是否会再处理其他请求?

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

我相信如果您的应用将“X-Accel-Redirect”标头放入其响应中,Nginx会允许此操作:http://kovyrin.net/2006/11/01/nginx-x-accel-redirect-php-rails/。 Apache和Lighttpd具有相同的功能。

有什么建议吗?

1 个答案:

答案 0 :(得分: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