鉴于以下情况:
'Trusted computer for delegation'
目录在应用程序中,用户可以上传文件。此上传的文件必须保存在 Server 2 上。在代码中,我们创建了 Server 2 的UNC路径并将其保存在那里。
public ActionResult Upload(HttpPostedFileBase file)
{
var savedDirectory = "\\Path\To\Server2";
if (Directory.Exists(savedDirectory))
{
file.SaveAs(savedFileName);
}
else
{
Directory.CreateDirectory(savedDirectory);
file.SaveAs(savedFileName);
}
return RedirectToAction("Action", "Controller", new { id = 1 });
}
我们在服务器1 上安装了应用程序并在服务器1 上进行本地测试,一切都很顺利。文件上传到服务器2 没有问题。
当我们从客户端桌面测试相同的方案时,我们收到一条错误消息,指出没有足够的权限将文件保存在 Server 2 上。
wireshark会话显示服务器1 未模拟,因为服务器2 上经过身份验证的用户为空/匿名。
我们没有让模拟工作,所以我们创建了一个服务帐户,并将应用程序配置为使用此Specific User
代替Authenticated User
进行模拟。该服务帐户是一个域帐户,对 Server 2 上的文件夹具有权限。
当我们尝试上传时,服务帐户对我们上传文件的本地文件夹没有任何权限。
我们通过Impersonation in asp.net mvc了解到,我们需要信任服务器1 进行委派。
在我们信任服务器1 进行委派之后:仍无权将文件保存在服务器2 上。我们尝试将此模拟为Authenticated User
en Specific user
Authenticated User
且委派无效:对服务器2的权限不足 Specific User
无法正常工作:对本地文件夹 我们在这里错过了什么吗?我们是否需要额外的授权步骤?
答案 0 :(得分:1)
我们通过以下方式解决了这个问题:
Kerberos provider
添加到IIS中的应用程序(右键单击Windows身份验证)答案 1 :(得分:0)
我今天遇到了这个错误,以下是我为解决问题所采取的措施:
编辑应用程序的web.config文件以指定以下设置:
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="true" />
</system.webServer>