【问题标题】:Accessing folder outside website's root folder in asp.net在asp.net中访问网站根文件夹外的文件夹
【发布时间】:2013-10-30 16:39:10
【问题描述】:

我在服务器上有大约 15 个网站,我已经构建了一个在所有网站上通用的工具。

现在,我决定不再将相同的文件保存在单个站点的文件夹中,而是保持该文件夹通用,并将其保存在网站文件夹之外,这样我就不必将文件保存在所有站点下。

但我的问题是,如果该文件夹位于网站的根文件夹之外,我将无法访问它,因为 Server.MapPath 不起作用。

我什至尝试将这些文件保存在站点根目录之一的文件夹下,并像http://domain.com/folder/control.ascx 一样访问它们,但这也不起作用。它抛出错误说:http:/domain.com/folder/control.ascx' is not a valid virtual path

谁能帮助我了解如何访问根文件夹之外的文件,或者将其保存在站点的根文件夹中。

【问题讨论】:

  • 阅读 Medium Trust 反对完全信任。也在这里smarterasp.net/support/KB/a252/…
  • 嗨@Steve,你能告诉我如何定义信任级别,因为我的网站有专用服务器。所以我想我可以接受这个。那么,如果我完全信任,那么我可以完成上述任务吗?

标签: asp.net root loadcontrol virtual-path


【解决方案1】:

您是否尝试过在您的站点下添加一个指向公共目录的虚拟目录?

Server
  Sites
    Common - base directory is C:\sites\common\
    SiteA - base directory is C:\sites\siteA\
      common - virtual directory pointing to C:\sites\common
    SiteB - base directory is C:\sites\siteB\
      common - virtual directory pointing to C:\sites\common

【讨论】:

  • 嗨@Anderson,我怎样才能在我的网站之外创建目录作为虚拟目录,因为该目录在 IIS 中不可用以使其成为虚拟目录,但是我尝试将该文件夹保存在其中一个下网站并将其虚拟化,但这也无济于事。
  • 这是最简单、最快和最安全的解决方案,非常感谢@Anderson
【解决方案2】:

您需要将整个站点的信任级别设置为完全信任

只需打开IIS Manager,单击根节点并双击NET Trust Levels。在这里,您可以尝试各种信任级别,以查看您的 Server.MapPath 是否允许跨站点路径

Here an article 详细说明如何使用命令行进行操作

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-10
    • 2020-04-04
    • 2010-11-16
    • 1970-01-01
    • 2013-10-08
    • 1970-01-01
    • 2017-08-31
    相关资源
    最近更新 更多