1

我正在开发一个asp.net 网站。我想允许用户在网站内创建自己的文件夹。

string pathToCreate = "~/path/sub folder";
        if (Directory.Exists(Server.MapPath(pathToCreate)))
        {
            // folder exist message
        }
        else
        { //cerate folder
            Directory.CreateDirectory(Server.MapPath(pathToCreate));
            base.OnLoad(e);
        }

这在我使用 Visual Studio 进行调试时工作。但是当我在 IIS 中托管它之后,它显示 Access denied to the previous specified path 的错误

Access to the path 'C:\inetpub\wwwroot\sample_site\resources\users_folder' is denied.

Line 47:                 Directory.CreateDirectory(Server.MapPath(pathToCreate));
4

3 回答 3

2

默认情况下,不允许对 web 目录中的 ASP.NET 进程进行写访问。

然而有一个例外。您可以写入App_Data目录。只需在那里创建文件夹。

于 2013-04-26T05:18:48.677 回答
0

任何一个:

  1. 为运行 IIS 的用户授予此文件夹的写入权限。
  2. 在服务器上创建一个新用户,授予该用户写入权限,并通过添加到 web.config 让网站模拟该用户:

    <identity impersonate="true" userName="username" password="password"/>

我一直发现 2. 在我们的环境中效果更好。

于 2013-04-26T09:10:13.487 回答
0

它需要整个路径 - 类似于"C:\inetpub\wwwroot\sample_site\resources\users_folder".

用于Server.MapPath("~/YourApplication/folder") + @"\folder"获取文件夹的物理路径。

参考:

http://forums.asp.net/t/1622617.aspx/1

于 2013-04-26T05:21:13.293 回答