【发布时间】:2011-01-09 19:04:18
【问题描述】:
这确实不是一个非常复杂的场景,但是当我开始输入问题时,我意识到它在文本上会变得多么复杂。让我试着说清楚:
首先,设置...
我有一个 C#/ASP.NET Web 应用程序,它在我的主域 (www) 上面向公众,我们称之为 www.mysite.com。没什么花哨的,只是一个连接 SQL 来显示记录的前端。
然后,我有第二个 C#/ASP.NET Web 应用程序,它使用在子域上运行的表单身份验证进行保护,我们称之为 admin.mysite.com。这是一个非常轻量级的 CMS 系统,用于管理公共站点。
现在,问题...
这两个站点都可以正常执行基本任务,但是,当我尝试访问文件系统进行上传时,我的问题就出现了。我的虚拟主机需要子域作为 IIS 中主应用程序下的虚拟目录运行(因此当您键入 admin.mysite.com 时,子域实际上解析/重新定向到 www.mysite.com/admin),但正因为如此,我我无法从子文件夹写入我的网站根目录。
让我再解释一下……
CMS 系统(作为虚拟目录运行)使管理员能够上传照片以在主站点上显示,其目标文件夹是 www.mysite.com/images - 当尝试从根应用程序访问磁盘时,我可以写入虚拟目录,但不能做相反的事情 - 即从虚拟目录写入根目录,从而导致安全违规。如果我只能上传到 /admin/ 虚拟目录,那么整个问题就没有意义了,因为它是一个公众看不到的安全文件夹!
我能想到的唯一解决方案是将文件上传到 /admin/ 虚拟目录,然后调用根目录中的 URL 将文件从 /admin/ 移回根目录,但这完全是 ghetto。
我希望这篇文章有意义。其他人有过这样的经历吗?最重要的是,无论使用什么凭据,虚拟目录似乎都只能访问它们自己,而不是它们的父目录。
谢谢!
【问题讨论】:
-
如果你不在 Windows 上,符号链接很容易解决这个问题 ;)