我们有一个使用webdav的程序,通过Windows身份验证进行身份验证,因此用户无需键入其用户名和密码。这工作正常,直到我们迁移域名。现在用于连接的代码返回错误代码5(访问被拒绝):
string psPassword =null, psUsername=null;
structNetResource stNetRes = new structNetResource();
stNetRes.iScope = 2;
stNetRes.iType = RESOURCETYPE_DISK;
stNetRes.iDisplayType = 3;
stNetRes.iUsage = 1;
stNetRes.sRemoteName = WebDAVServerpath;
stNetRes.sLocalName = null; //connect, but don't show drive in my computer
int iFlags = CONNECT_CMD_SAVECRED;
int i = WNetAddConnection2A(ref stNetRes, psPassword, psUsername, iFlags);
有没有人知道如何解决这个问题?我试过了
int j = WNetCancelConnection2A(WebDAVServerpath, CONNECT_UPDATE_PROFILE, 0);
事先清除任何旧连接,但这不起作用。
(正在运行net use \\server.domain.com\share
提示输入用户名和密码,而在用于直接连接之前,所以它看起来像是在与Windows身份验证相互作用。)
编辑 - 这是一个WinForms应用程序,IIS和共享文件存储在同一台机器上。该问题仅发生在已迁移的计算机上;已经(现在仍然)超出我们域名的PC不受影响。
答案 0 :(得分:1)
如果您的文件服务器和Web服务器不是同一台计算机,则需要设置文件服务器以信任Web服务器以进行委派。这允许文件服务器信任Web服务器已验证的凭据,而不是在每个请求上重新提示凭据。