2010-05-05 62 views
0

我有一些ASP.NET文件访问和操作,我用于文件访问的方法如下。现在我需要访问另一个服务器共享文件夹上的文件,该怎么做?我可以轻松地将文件路径更改为共享文件夹路径,但由于共享受密码保护,因此我得到“无法访问”错误。 据我所知,我需要以某种方式发送凭据到远程服务器之前执行下面的方法。怎么做?ASP.NET访问另一台计算机共享文件夹中的文件

FileStream("c:\MyProj\file.doc", FileMode.OpenOrCreate, FileAccess.Write) 
Context.Response.TransmitFile("c:\MyProj\file.doc"); 

问候, 托马斯

回答

2

ASP.NET应用程序(默认)将在IIS6执行 “ASPNET” 计算机帐户下。因此,你有两个选择:

  • 配置您的ASPNET应用到下一个(弱)的域帐户运行的权限来访问远程计算机的共享
  • 设置共享上的权限,以允许访问“每个人都“(不推荐)
  • 禁用窗体身份验证并在ASP.NET应用程序中使用Windows身份验证。关闭web.config中的模拟,IIS应将当前正在使用您的Web应用程序的用户的凭据传递给底层共享(我认为)。

例如,如果您的用户都在您的Intranet上拥有域帐户,则后一选项仅适用。我会继续环顾四处添加凭证的方式,但如果可能的话,我不确定我的头顶。

HTH,

Richard。

+0

谢谢你的回答!不是三个你建议的解决方案符合我的需求。第二个看起来很容易实现,但它可以访问所有用户共享,不幸的是,Windows不允许完全隐藏共享。 我试图使用映射网络驱动器映射共享文件夹作为驱动器,不幸的是,这也不适用于IIS6。 – Tomas 2010-05-05 10:16:19

+0

@Tomas - 映射网络驱动器并不是真正实现它的最好方式,因为它们是按登录用户而不是每台计算机映射的。如果您确实需要这样做,那么Scott Hanselman的博客上有这方面的工作。您可以尝试创建一个新的域用户帐户(可能称为WebShare或其他),并将其授予您的网络共享。然后,您可以右键单击IIS6中的应用程序,转到“属性”,然后将工作进程更改为“WebShare”。这将迫使您的Web应用程序采用“WebShare”标识,因此它将能够访问该共享。 – Richard 2010-05-05 12:46:57

+0

理查德,你的建议有效!感谢您的帮助。 – Tomas 2010-05-07 10:48:38

相关问题