上市目录

时间:2016-02-19 17:39:46

标签: c# asp.net permissions iis-8 directory-browsing

我有一个VPS(云端服务器),我有Visual Studio,IIS,SQL ......安装了所有这些好东西。我有时也会在这个VPS上进行开发。

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

我将它们放在App_Data文件夹中的原因是因为我不希望用户像这样:www.mywebsite.com/ROOT/ [设置文件列表]。 相反,如果他们试图去:www.mywebsite.com/App_Data/[tries获取列表],IIS将使用一个很好的错误阻止它们(因为IIS会阻止对该文件夹的访问)。

因此,网站通过后面的代码访问App_Data文件夹中的结构。这是网站导航的方式。它可以下载,上传,移动文件,重命名...删除...一切都在App_Data文件夹内/内。

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

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

所以我猜(我最好的猜测)我的VPS上的IIS不允许这种访问。我一直在尝试在某个地方找到能够/可能允许的设置。

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

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

1 个答案:

答案 0 :(得分:0)

哦,所以这是一个非常愚蠢的错误 - 但这就是我们学习的方式!

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

目前我知道有三种方法可以解决这个问题:

  1. 如果您的解决方案具有发布配置文件(以便您可以发布该站点),则可以右键单击Visual Studio中的空文件夹,然后说出发布[FolderName],例如:enter image description here
  2. 您可以在该目录中创建一个空文件,然后重新发布整个网站。因为该文件夹不再是空的,所以它会与网站的其余部分一起发布。
  3. 只需在您的托管空间中手动创建文件夹。
  4. Thanx为大家输入! 非常感谢!