使用C#ASP.NET时,“WebClient请求期间发生异常”

时间:2011-11-07 07:06:19

标签: c#

所以,我已经为我的程序构建了一个自动更新程序。

此处运行的代码是:

new WebClient().DownloadFile("XXXX", checkingfolder.SelectedPath);

XXX是我的网络服务器,在verio中作为VPS服务器运行,具有最新的IIS和所有内容。

当用户点击下载按钮时,它会显示:

'An exception occurred during a WebClient request.

事情是,我甚至不知道为什么 - 我只是尝试抓住。

这里有人知道为什么会这样吗?

感谢你给我的任何帮助,你不知道你在这里帮助了我多少 - 再次感谢!

6 个答案:

答案 0 :(得分:44)

如果我指定,我可以重现这一点,因为在您的示例中似乎文件夹名称,而不是文件名称目的地。改为提供文件名称。

撇开;如果我查看InnerException,它会告诉我问题与文件路径有关:

using(var client = new WebClient())
{
    try
    {
        client.DownloadFile(
            "http://stackoverflow.com/questions/8033619/an-exception-occurred-durning-a-webclient-request-c-sharp-asp-net/8033687#8033687",
            @"j:\MyPath");
    }
    catch (Exception ex)
    {
        while (ex != null)
        {
            Console.WriteLine(ex.Message);
            ex = ex.InnerException;
        }
    }
}

给出了:

An exception occurred during a WebClient request.
Access to the path 'j:\MyPath' is denied.

如果我将其更改为文件,则可以正常使用:

client.DownloadFile(
    "http://stackoverflow.com/questions/8033619/an-exception-occurred-durning-a-webclient-request-c-sharp-asp-net/8033687#8033687",
    @"j:\MyPath\a.html");

答案 1 :(得分:3)

有时当另一个类或进程正在访问您刚刚下载的文件时会发生此错误

答案 2 :(得分:2)

如果目录不存在,它会给出异常。

例如路径是 @" j:\ Folder \ SubFolder \ 123.pdf SubFolder 不存在,会引发异常。

答案 3 :(得分:2)

我在尝试下载文件时遇到此错误,其中生成的下载文件路径长度超过某个任意限制

将下载文件的路径名更改为250个字符后,问题就消失了

答案 4 :(得分:1)

除其他答案外,请注意,如果客户端进程不需要创建输出文件的权限,也可能会发生相同的 WebException

我建议您采取以下策略:

  1. 将文件下载到具有 .tmp .txt )扩展名Windows临时文件夹的唯一文件名,以避免写权限和其他权限问题
  2. 将临时文件移动到目标文件夹
  3. 将临时文件重命名为目标文件名

希望它会有所帮助:-)

答案 5 :(得分:1)

如果目录不存在,此错误消息将显示为 “在WebClient请求期间发生异常” 因为Web客户端找不到用于存储下载文件的文件夹。

希望对您有帮助-:)