【问题标题】:Access denied while trying to write file to a location尝试将文件写入某个位置时访问被拒绝
【发布时间】:2015-04-10 18:47:37
【问题描述】:

我正在尝试将文件写入共享文件夹上的特定位置。 只有少数人可以访问此共享文件夹。但在代码中,我想获取 Windows 凭据或提供特定的用户名和密码。 但是,当我尝试时,它总是显示访问被拒绝。 我想传递某些凭据或 Windows 网络登录凭据。我怎样才能做到这一点?

            string destFilename = @"\\test.net\excel\docs\test.xls";
            System.Net.WebClient client = new System.Net.WebClient();
            WebDownload w = new WebDownload(3600000);
            UTF8Encoding objUTF8 = new UTF8Encoding();
            byte[] data = w.DownloadData();
            WebRequest request = WebRequest.Create(destFilename);
            File.WriteAllBytes(destFilename, data); //ACCESS DENIED

编辑

这是一个控制台应用程序

【问题讨论】:

  • ASP.NET 不会以登录用户的身份运行。您需要设置 IIS 以将其作为具有访问权限的特定帐户运行,或者可能授予运行 asp.net 的用户在文件夹的许可下(see here
  • 这并不总是正确的。如果 Web 服务器位于公司域中并且网站设置为使用集成 Windows 身份验证,则网页会作为调用用户运行。不是说是这样,但OP没有具体说明。
  • 我不肯定你的意思,但我还是很菜鸟,所以我相信你的话:)
  • 如果它是一个控制台应用程序你应该删除 asp.net 标签
  • 我认为控制台应用程序将以登录用户的权限运行。不过不确定。

标签: c# file file-io console-application file-permissions


【解决方案1】:

您可以设置 IIS 应用程序池标识,以便以具有访问权限的用户身份运行应用程序。您可以在此处找到更多信息:

http://www.iis.net/learn/manage/configuring-security/application-pool-identities

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-29
    • 2015-03-06
    • 1970-01-01
    • 2017-03-27
    • 2020-01-24
    • 2015-03-06
    • 1970-01-01
    • 2016-05-27
    相关资源
    最近更新 更多