在ASP.NET中跨域上载文件

时间:2009-11-12 21:07:30

标签: .net asp.net

遇到一点麻烦,我想知道你们所有人的建议。 感谢您的投入。

我们有一个ASP.NET网站,其中一个功能是该网站允许用户上传文件,然后服务器将它们保存到UNC路径。

我们的部分用户无法上传文件。我认为这可能是安全问题,因为这些用户位于不同的域中,因此无法访问UNC路径到哪里 系统正在尝试保存文件。

该网站使用Windows身份验证来验证用户。 文件服务器和Web服务器是两台独立的计算机,但位于一个域中 用户来自其他域

系统正在使用System.Web.HttpPostedFile.SaveAs(String SaveLocation) 保存文件

我无法弄清楚为什么没有使用AppPool的设置保存文件 以及如何配置此不要尝试使用客户端凭据来保存文件。

编辑: 我认为如果它是由应用程序池控制的,那么我们的所有用户都会遇到麻烦。但它似乎只是域外的文件服务器。

有什么想法吗?

感谢您的见解。

3 个答案:

答案 0 :(得分:1)

你的web.config中有<identity impersonate="true" />吗?

如果是,您使用客户端用户凭据保存该文件;在这种情况下,如果您只使用应用程序池帐户并使用适当的文件系统权限授予它,则可能会更好。

您可以定义凭据this way

<identity impersonate="true" 
          userName="domain\username"
          password="password"/>

答案 1 :(得分:1)

在IIS下 Properties-->Directory Security-->Authentication Access and Control 在“启用匿名访问”框中,将用户名更改为具有访问权限的域帐户

详细说明,应用程序池是进程运行的帐户,“身份验证访问和控制”帐户是匿名用户实际运行的用户名。这是有道理的,因为您的域用户(可能使用集成身份验证)已经具有访问权限。

修改 这也是一个漂亮的形象: alt text

答案 2 :(得分:0)

您可以尝试在应用程序池设置中配置具有足够权限写入UNC共享的固定标识。

alt text