C# webClient.DownloadFile()返回404

C# webClient.DownloadFile()返回404,c#,asp.net,http-status-code-404,webclient,C#,Asp.net,Http Status Code 404,Webclient,使用此url的浏览器下载文件正常,但webClient返回404 string url = "http://zakupki.gov.ru/44fz/filestore/public/1.0/download/priz/file.html?uid=19CC93BEA67C4650B51D69CAA28CB27D"; using (var webClient = new WebClient()) {

使用此url的浏览器下载文件正常,但webClient返回404

 string url = "http://zakupki.gov.ru/44fz/filestore/public/1.0/download/priz/file.html?uid=19CC93BEA67C4650B51D69CAA28CB27D";      
 using (var webClient = new WebClient())
        {                          
            webClient.DownloadFile(url , "name");
        }

Web浏览器执行的请求与来自WebClient的请求之间存在差异

您需要将以下内容添加到代码中:

webClient.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");
因此,您的代码将更改为:

string url = "http://zakupki.gov.ru/44fz/filestore/public/1.0/download/priz/file.html?uid=19CC93BEA67C4650B51D69CAA28CB27D";
using (var webClient = new WebClient())
{
  webClient.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");
  webClient.DownloadFile(url, "name.docx");
}

我希望它能帮助您

也许您需要设置UserAgent。可能会帮助你。如果可以,请查看响应。它是用俄语编写的Word文档(.docx)。这和你有关吗?因为现在已经公开了。用户代理头的建议是正确的。一个次要的建议是:使用实际值,即
$”Mozilla/4.0(兼容;MSIE 6.0;{Environment.OSVersion.VersionString};.NET CLR{Environment.Version};)“
,而不是对字符串进行硬编码,在语义上更正确(尽管最终这并不重要)。