2

在我的 Web 应用程序中,我有一个按钮,它根据日期创建一个文件夹,如下所示:

if (!Directory.Exists(SaveLocation + DateTime.Now.Year + @"\" + DateTime.Now.Month + " - " + DateTime.Now.ToString("MMM") + @"\" + DateTime.Now.Day + @"\" ))
    Directory.CreateDirectory(SaveLocation + DateTime.Now.Year + @"\" + DateTime.Now.Month + " - " + DateTime.Now.ToString("MMM") + @"\" + DateTime.Now.Day + @"\");

当我在 localhost 中运行此代码时,它工作正常。每当它在服务器上运行时,我都会收到错误消息:

Access to the path '\\server\share\savelocation\2014\06 - June\3\' is denied

我尝试过的事情:

  • 站点在 Windows 身份验证下运行
  • 给每个人的文件夹和共享读/写权限
  • 尝试添加<identity impersonate="true" />到 Web.config
  • 将 App Pool 的 Managed Pipeline 模式更改为 Classic

为什么应用程序无法访问此目录?

4

3 回答 3

1

处理文件和文件夹时需要物理文件路径,而不是根相对路径。试试这个: var content = Server.MapPath("~/Content/");

https://forums.asp.net/t/1807775.aspx?Create+e+New+Folder+Access+Denied+

于 2018-01-16T15:23:46.987 回答
0

好的,所以我禁用了对服务器的匿名身份验证,它现在可以工作了。我假设这是试图以权限不足的用户身份访问共享。我没有注意到这一点,因为它在将信息传递到 SQL 服务器时使用了正确的凭据,所以我假设凭据对于文件夹权限是正确的。但无论如何它现在都有效。

于 2014-06-03T14:33:17.210 回答
-2

删除尾部斜杠;在MSDN上的示例没有它,而 IIRC 它会产生问题。

于 2014-06-03T09:31:49.647 回答