在我的Sharepoint应用程序页面中,我正在尝试从网络共享文件夹中复制文件..我的代码如下所示..
try
{
File.Copy("\\MShare\Public\Test.txt", "C:\Temp\Test.txt", true);
LblMessage.Text = "File copied.";
}
catch (Exception ex)
{
LblMessage.Text = ex.ToString() + " - " + ex.Message;
}
如果我在ASP.NET网站上测试相同的代码,它运行良好。但是我收到的错误如下:SP Application Page ..
System.UnauthorizedAccessException: Access to the path '\\MShare\Public\Test.txt' is denied. at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) at System.IO.File.InternalCopy(String sourceFileName, String destFileName, Boolean overwrite) at System.IO.File.Copy(String sourceFileName, String destFileName, Boolean overwrite) at TestApp.PullingFile.ButGet_Click(Object sender, EventArgs e) - Access to the path '\\MShare\Public\Test.txt' is denied.
我已尝试按照this帖子实施模拟..不工作..
我尝试使用<trust level="WSS_Medium" originUrl="" />
更改web.config也是..
答案 0 :(得分:0)
默认情况下,SharePoint使用impersonating。这意味着您的代码在当前用户的凭据下运行。该用户没有(也不应该)访问服务器的文件系统。
为了访问文件系统,您可以执行revert to the system accounts credentials:
SPSecurity.RunWithElevatedPrivileges(() =>
{
File.Copy("\\MShare\Public\Test.txt", "C:\Temp\Test.txt", true);
});
您必须牢记的是:
最后但并非最不重要:
为什么你必须将文件复制到服务器的文件系统呢?你是否需要在服务器上进行物理操作,或者这只是暂时的(正如人们可以通过路径猜测的那样)。