列出目录时 IIS 上的网站出现错误

Website on IIS Errors When Listing Directories

我有一个 VPS(云服务器),我有 Visual Studio、IIS、SQL... 安装了所有这些好东西。我有时也在做这个 VPS.

的开发

这个网站基本上是一个简单的文件管理器。加载时,它会列出驻留在 App_Data 文件夹中的文件和文件夹。也就是说,我正在使用 App_Data 作为文件管理器的 "root/home/topmost-directory"。

我将它们放在 App_Data 文件夹中的原因是因为我不希望用户像这样:www.mywebsite.com/ROOT/[gets a list of文件]。 相反,如果他们尝试去:www.mywebsite.com/App_Data/[尝试获取列表],IIS 将阻止他们并出现错误(因为 IIS 阻止访问该文件夹)。

因此,该网站通过隐藏代码访问 App_Data 文件夹中的结构。这就是网站导航的方式。它可以下载、上传、移动文件、重命名...删除...一切都正确 to/inside App_Data 文件夹。

唯一的问题是,这仅在我 运行 Visual Studio 中的网站和 运行 我的测试、测试网站、调试等时有效。我发布的那一刻 (通过 Visual Studio) 中的文件系统将网站转到目录:"C:/inetpub/Sites/[WebsiteFolder]",然后导航到网站的 URL,该网站不再工作。它加载,但它不再获取 App_Data 文件夹中的文件结构,它无法创建新文件夹,无法重命名它们...

当我通过 FTP 将此网站上传到另一个网站 space 时,该网站运行正常,该网站托管在另一家托管公司(共享托管)的其他地方。

所以我猜(我最好的猜测)我 VPS 上的 IIS 不允许这种访问。我一直在尝试在 would/could 允许的 IIS 上找到设置。

我启用了目录浏览,但除了确保目录可访问之外,这可能是我唯一能想到的事情 (readable/writable)。

你知道我还能尝试什么吗?

好吧,这是一个非常愚蠢的错误 - 但我们就是这样学习的!

App_Data 文件夹中没有任何其他文件或文件夹。 正如我们所知,ASP.NET 不会发布空目录。这意味着一旦我发布了网站,那些空文件夹就不存在了。

目前我知道有 3 种方法可以解决此问题:

  1. 如果您的解决方案有发布配置文件(以便您可以发布站点),您可以右键单击 Visual Studio 中的空文件夹,然后说发布 [FolderName] 例如:
  2. 您可以在该目录中创建一个空文件,然后重新发布您的整个网站。由于该文件夹不再是空的,它与网站的其余部分一起发布。
  3. 只需在您的主机上手动创建文件夹 space。

感谢大家的意见! 非常感谢!