如何解决WebClient.DownloadFile期间c#中路径过长的异常

如何解决WebClient.DownloadFile期间c#中路径过长的异常,c#,exception,webclient,C#,Exception,Webclient,我尝试使用webClient.DowloadFile下载文件时出现异常 WebClient webClient = new WebClient(); Uri downloadUri = new Uri("http://ia.mediaimdb.com/images/M/MV5BMjA5MTE1MjQyNV5BMl5BanBnXkFtZTcwODI4NDMwNw@@._V1._SY0.jpg"); string posterFilePath = "D

我尝试使用
webClient.DowloadFile
下载文件时出现异常

WebClient webClient = new WebClient();
Uri downloadUri = new Uri("http://ia.mediaimdb.com/images/M/MV5BMjA5MTE1MjQyNV5BMl5BanBnXkFtZTcwODI4NDMwNw@@._V1._SY0.jpg");            
string posterFilePath = 
           "D:\Visual Studio Projects\Projects\TFS Source Control\" +
           "MyMovieManager\MyMoviesManager\MyMoviesManager\bin\Debug\" +
           "MoviesDB\Journey.2.The.Mysterious.Island.2012.DVDRip.XviD-DEPRiVED[ExtraTorrent]\" +
           "Journey.2.The.Mysterious.Island.2012.DVDRip.XviD-DEPRiVED[ExtraTorrent].png";
webClient.DownloadFile(downloadUri, posterFilePath); 
我还发现了引发此异常的其他情况,我的解决方案是使用内核32中的函数,编写其他函数来替换文件和路径函数


关于DownloadFile函数,我可以做些什么吗?

您可以使用,并手动写入结果流。这将需要使用而不是
DownloadFile
,并自己编写管理文件。

您可以使用webclient.DownloadFile创建临时文件,即C:\temp\myDownload.png,然后将其移动到所需路径。您需要检查c:\Temp文件夹是否存在。如果不是,则创建它。

需要注意的一点是,如果文件地址(第一个参数)太长,如果使用接受2个字符串的函数版本,也会引发此异常。
当然,解决方案是使用
新Uri(地址)
将其转换为
Uri
,而不是尝试使用超出您知识范围的内容,只需缩短路径即可。当然,试图获得盗版电影的帮助是不明智的。我还使用了你的链接来创建移动功能,该功能将与长路径一起工作。谢谢