【问题标题】:C# Impersonate to Save on NAS drive not workingC# 模拟保存在 NAS 驱动器上不起作用
【发布时间】:2018-07-23 10:53:20
【问题描述】:

我一直在尝试在我的 c# 应用程序上实现模拟以将文件保存在 NAS 驱动器上,但即使我的凭据有效。由于用户名或密码不正确,我不断收到错误消息。它工作了几次,然后一直失败。当我在 IIS 上部署它时发生了这种情况。

 if (RevertToSelf())
            {
                if (LogonUser(AppConstants.NASAccessUserName, AppConstants.NASServerDomain,
                    AppConstants.NASAccessPassword, LogonType.Interactive,
                    LogonProvider.Default, out _token))
                {
                    if (DuplicateToken(_token, SecurityImpersonationLevel.Impersonation, out _tokenDuplicate))
                    {

                        var tempWindowsIdentity = new WindowsIdentity(_tokenDuplicate);
                        _impersonationContext = tempWindowsIdentity.Impersonate();
                        return true;
                    }
                    throw new Win32Exception(Marshal.GetLastWin32Error());
                }
                throw new Win32Exception(Marshal.GetLastWin32Error());
            }
            throw new Win32Exception(Marshal.GetLastWin32Error());

我也尝试使用 LOGON32_LOGON_NEW_CREDENTIALS 作为登录类型以及 LOGON32_PROVIDER_WINNT50,但没有运气。我在这里想念什么? NAS服务器上是否有任何配置?还是有什么要补充的?

【问题讨论】:

    标签: c# impersonation advapi32


    【解决方案1】:

    你的配置文件中有这个吗?

    <identity impersonate="true" />
    

    【讨论】:

    • 是的,我也添加了:(
    • 你还能想到什么?
    • 顺便说一句,我将登录类型更改为网络。现在错误已经改变。它显示为访问路径被拒绝,但我已授予驱动器文件夹上特定用户的访问权限
    • @Isham 什么协商协议? Kerberos 还是 NTLM?
    • 协议是 NTLM
    猜你喜欢
    • 2010-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多