下载网络文件失败

时间:2015-02-16 16:51:40

标签: c# asp.net asp.net-mvc webclient

以下代码提供以下异常和内部异常:

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来检查文件是否存在以及复制操作。

2 个答案:

答案 0 :(得分:1)

new Uri(@"\\NetworkPC\File.ppt")会导致file://networkpc/File.ppt不是网络文件路径。您正在使用WebClient访问文件,这是一个错误的开始。使用通常的文件API。

答案 1 :(得分:0)

将File.Exists和File.Copy方法添加到web.config后:

更多信息:http://support.microsoft.com/kb/306158