以下代码提供以下异常和内部异常:
webClient.Credentials = CredentialCache.DefaultNetworkCredentials;
webClient.UseDefaultCredentials = true;
var uri = new Uri("\\NetworkPC\File.ppt");
webClient.DownloadFile(uri, "\\NetworkPC\App\File.ppt");
我尝试使用模拟,但得到了同样的错误:
var identity = WindowsIdentity.GetCurrent();
using (identity.Impersonate())
{
webClient.Credentials = CredentialCache.DefaultNetworkCredentials;
webClient.UseDefaultCredentials = true;
var uri = new Uri("\\NetworkPC\File.ppt");
webClient.DownloadFile(uri, "\\NetworkPC\App\File.ppt");
}
我可以从Windows资源管理器访问“\ NetworkPC \ File.ppt”文件。我在这里缺少什么?
申请详情: ASP.NET MVC .NET 4.0
IIS应用程序设置: 传递身份验证
例外:
Message=Access to the path '\\NetworkPC\File.ppt' is denied.
Source=System
TargetSite=Void DownloadFile(System.Uri, System.String)
内部例外:
Message=Access to the path '\\NetworkPC\File.ppt' is denied.
Source=System
StackTrace= at System.Net.FileWebResponse..ctor(FileWebRequest request, Uri uri, FileAccess access, Boolean asyncHint)
at System.Net.FileWebRequest.GetResponseCallback(Object state)
TargetSite=Void .ctor(System.Net.FileWebRequest, System.Uri, System.IO.FileAccess, Boolean)
更新
基于使用File.Exists和File.Copy而不是WebClient尝试的反馈。 File.Exists返回false。以前的ASP解决方案使用COM组件ASPUpload来检查文件是否存在以及复制操作。
答案 0 :(得分:1)
new Uri(@"\\NetworkPC\File.ppt")
会导致file://networkpc/File.ppt
不是网络文件路径。您正在使用WebClient访问文件,这是一个错误的开始。使用通常的文件API。
答案 1 :(得分:0)
将File.Exists和File.Copy方法添加到web.config后: