我有一台 IIS(v6)/Windows 2003/.Net 3.5(应用程序代码、库等)服务器,托管一个位于 www.mywebsite.com 的网站,映射到 E:\Inetpub\wwwroot\mywebsite,我们还有一个虚拟目录 (VirtDir),映射到 E:\Inetpub\wwwroot\mywebsite\files(尽管理论上它可能位于不同的目录或单独的机器中),我们在其中存储客户的文件(一堆 .pdf 和 .xls)。目前,要访问文件,您可以在 URL 中输入类似 www.mywebsite.com/VirtDir/Customer/myFile.pdf 的内容,然后访问该文件。
问题是用户不必登录 www.mywebsite.com 即可访问文件,我们希望他们先登录。我们希望用户通过 mywebsite 登录,如果有效,则让他们从虚拟目录下载文件。www.mywebsite.com 和 VirtDir 是同一服务器场上的独立站点。允许匿名访问和集成 Windows 身份验证均已启用。
我更像是一名开发人员,而不是系统管理员,但希望我处于正确的位置,任何帮助都将不胜感激。
答案1
通常在这些情况下,我会通过 Web 应用程序中的控制器提供文件,例如:
http://www.example.com/dl.aspx?file=someFileID
dl.aspx 随后将处理身份验证要求,并在需要时重定向到登录。如果通过身份验证,它将查找文件,在磁盘上找到它,将其读入,然后在为 mime/type 和文件名设置适当的响应标头后将内容返回给访问者(通过内容处置)。还有其他方法可以解决这个问题,但我通常发现这是 IIS 阻力最小的路径。