【问题标题】:Subdomain Hosting Issue with Disk Access (C#/ASP.NET 3.5)磁盘访问的子域托管问题 (C#/ASP.NET 3.5)
【发布时间】: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 上,符号链接很容易解决这个问题 ;)

标签: c# asp.net upload


【解决方案1】:

与您的问题有些无关。

由于您所说的,GoDaddy 不是一个很好的主机。我最近在寻找一个主机,并全心全意地推荐 JodoHost.com。

我就此事写的一些帖子:
http://www.ocdprogrammer.com/post/2009/12/16/The-search-for-a-web-host.aspx http://www.ocdprogrammer.com/post/2010/01/03/JODOHostcom.aspx

但是,您看到的行为对我来说似乎很正常。子域无法访问根域。虽然使用专用服务器可以克服这一点,但这是共享主机的缺点之一。

【讨论】:

    【解决方案2】:

    在那种情况下,我想我会考虑使用数据库。

    我会这样做:

    1. 文件上传到 /admin 目录
    2. 管理应用程序将文件的 URL 写入它与根应用程序共享的数据库中
    3. 根应用从数据库加载 URL 并使用它指向文件。

    在这种情况下,我认为这是处理它的最佳方式。

    【讨论】:

      【解决方案3】:

      您可以在您的根域“www.yoursite.com”中放置一个网络服务,该服务将接收一个流并将该流作为文件保存到磁盘。 (这个网络服务可以接收三个参数:流,磁盘上所需文件的名称,以及最终文件的目标文件夹,因此它将是一个多用途的写入文件系统)

      稍后,在您的子域“subdomain.yoursite.com”中,您可以使用网络服务(当您 上传文件,转换为流,并将其发送到根站点中托管的 Web 服务 适当的参数)。

      【讨论】:

        猜你喜欢
        • 2017-07-26
        • 1970-01-01
        • 2021-08-09
        • 2015-01-19
        • 1970-01-01
        • 2019-04-07
        • 2010-11-26
        • 2017-05-11
        • 1970-01-01
        相关资源
        最近更新 更多