使用纯.Net中的凭证进行网络文件传输

时间:2014-10-01 11:20:36

标签: c# asp.net networking

最近,我创建了一种使用凭据通过网络传输文件的方法。为此我使用的是WIN-32 API LogonUser。 LogonUser使用advapi32.dll。这限制了我们在我们部署Web应用程序的操作系统中提供和支持此dll。

[System.Runtime.InteropServices.DllImport("advapi32.dll", SetLastError = true, CharSet = System.Runtime.InteropServices.CharSet.Unicode)]
public static extern bool LogonUser(String lpszUsername, String lpszDomain, String lpszPassword, int dwLogonType, int dwLogonProvider, ref IntPtr phToken);


private static string CopyToNetwork(string _sourceFile, string _targetFile, string _domain, string _userName, string _password)
{
    IntPtr tokenHandle = new IntPtr(0);
    bool returnValue = LogonUser(_userName, _domain, _password, 9, 3, ref tokenHandle);
    if(returnValue)
    {
        using(WindowsIdentity wid = new WindowsIdentity(tokenHandle))
        {
            using(WindowsImpersonationContext impersonatedUser = wid.Impersonate())
            {
                File.Copy(_sourceFile, _targetFile, IS_OVERWRITE);
            }
        }
    }
}

现在,我们不希望这种依赖。我们可以使用纯.Net做同样的事情吗?意思是不使用任何WIN API。

0 个答案:

没有答案