我有一个ASP.NET应用程序试图将文件复制到另一个域上的服务器上的远程共享(“REMOTEDOMAIN”):
File.Copy(@"c:\Test.txt", @"\\REMOTEMACHINE\Share");
当我们使用File.Copy方法时,尝试通过本地IIS安装连接到共享时,我收到“登录失败:未知用户名或密码”。尽管该共享本身具有“Everyone”读/写权限(至少暂时)。远程服务器上的安全日志记录了相同的错误,因此我知道该过程至少试图找到正确的位置。
我理解为什么,因为网站的应用程序池试图使用LOCALDOMAIN上的帐户进行身份验证,而不是REMOTEDOMAIN。
然而,奇怪的是,尽管开发服务器和IIS应用程序池都使用相同的凭据,但是当我通过ASP.NET开发服务器而不是IIS进行测试时,整个过程正常。
有关如何进一步诊断此问题的任何想法?不幸的是,测试网站必须保留在LOCALDOMAIN上,文件仍然必须复制到REMOTEDOMAIN;我不能将一个站点移动到另一个站点,反之亦然。
答案 0 :(得分:1)
每个人都不包含匿名,因此用户仍然需要位于REMOTEDOMAIN(http://support.microsoft.com/kb/278259)的域中。你可以通过允许“访客”来实现这一点,但这当然是一个安全噩梦,所以它没有多大帮助。
解决方案是冒充Asp.Net用户:http://support.microsoft.com/kb/306158
您应该知道的一个问题是,如果IIS不在远程域中,您可以通过在两台计算机上设置本地(非域)用户并为这两者设置相同的密码来解决此问题
尽管开发服务器和IIS应用程序池都是如此 正在使用相同的凭据。
你对此绝对肯定吗?如果您正在谈论Visual Studio开发服务器,它将在您的帐户上运行。通常Asp.Net作为“网络服务”运行