【问题标题】:How do I give permission to the IIS process to read a network location?如何授予 IIS 进程读取网络位置的权限?
【发布时间】:2019-07-07 16:34:31
【问题描述】:

我正在尝试从网页读取网络服务器上备份文件的大小,以确定是否还有足够的空间来存储几天的备份。

以下代码适用于本地目录:

var directoryInfo = new DirectoryInfo( @"c:\AppFolder\" );
var file = directoryInfo.GetFiles()
    .OrderByDescending( f => f.LastWriteTime )
    .First()
    ;
var length = file.Length;

但是当我尝试访问网络文件夹(例如 \\server1.domain1\share\)时,我收到了System.UnauthorizedAccessException:“访问路径 '\\server1.domain1\share\' 被拒绝。”

登录到网络服务器 (Windows Server 2012 R2) 后,我的帐户可以访问网络共享。我对 IIS 8.5 相当陌生。该网站是从 Windows 2003 R2 服务器上的 IIS 6 移出的。我尝试将应用程序池的身份更改为 4 个选项中的每一个,甚至将其设置为我的帐户,但我仍然收到拒绝访问消息。我使用进程监视器查看访问网络位置的帐户。这似乎表明正确的身份正在尝试访问网络位置。但即使在设置为我的帐户的条目上,它也会给出拒绝访问消息。

我尝试按照此处所述授予应用程序池身份的权限:IIS7 Permissions Overview - ApplicationPoolIdentity,但 Windows Server 2003 计算机无法将 IIS AppPool\website 识别为有效帐户。

最后,我尝试让每个人都完全控制文件夹和共享。即使这样也行不通……

更新的诊断信息
net share share的结果

Share name              share
Path                    c:\share
Remark                  
Maximum users           No limit
Users                   USER1
Caching                 Manual caching of documents
Permission              DOMAIN1\User1, READ

icacls c:\share的结果:

c:\share NT AUTHORITY\NETWORK SERVICE:(OI)(CI)(F)
         BUILTIN\Administrators:(I)(OI)(CI)(F)
         DOMAIN1\User2:(I)(F)
         CREATOR OWNER:(I)(OI)(CI)(IO)(F)
         DOMAIN1\User3:(I)(OI)(CI)(M)
         DOMAIN1\User1:(I)(OI)(CI)(RX)
         NT AUTHORITY\SYSTEM:(I)(OI)(CI)(F)
         BUILTIN\Users:(I)(OI)(CI)(RX)
         BUILTIN\Users:(I)(CI)(S,AD)
         BUILTIN\Users:(I)(CI)(S,WD)

Successfully processed 1 files; Failed processing 0 files  

进程监视器:

Operation: CreateFile
Path: \\\\server1.domain1\\share1
Result: ACCESS DENIED
Detail: Desired Access:  Read Data/List Directory, Synchronize,  
    Disposition: Open, Options: Directory, Synchronous IO Non-alert,  
    Open For Backup, Attributes: n/a, ShareMode: Read, Write, Delete,  
    AllocationSize: n/a, Impersonating:  DOMAIN1\\User1
User: DOMAIN1\\User1

【问题讨论】:

    标签: iis permissions application-pool iis-8.5 unc


    【解决方案1】:

    您是否尝试将应用程序池身份和站点的匿名身份验证设置为您的帐户?

    【讨论】:

    • 我禁用了匿名身份验证。 Windows 身份验证和 ASP.NET 模拟均已启用。
    • 您能否在托管共享端的服务器上打开管理员命令提示符,执行命令“net share ”和“icacls ”并在此处发布输出?另外,您说您使用了Process Monitor,您可以在这里发布失败的交易信息吗?
    • net share share 的结果 共享名 共享路径 c:\share 备注 最大用户数 无限制 用户数 USER1 缓存 手动缓存文档 权限 Domain1\User1, READ
    • 那么,您以“Domain1\User1”身份登录到您的 Web 应用程序?
    • 将结果添加到问题中。
    猜你喜欢
    • 1970-01-01
    • 2013-09-16
    • 2011-08-28
    • 2015-12-26
    • 1970-01-01
    • 2015-04-14
    • 1970-01-01
    • 1970-01-01
    • 2017-04-07
    相关资源
    最近更新 更多