You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用C#从URL读取文本文件?指定URL读取为空、下载0KB文件如何解决

问题根因

目标站点会校验请求头信息,默认的WebRequest、WebClient发送请求时未携带标准的User-Agent标识,服务器判定为非法爬虫请求,直接返回了空响应。谷歌、StackOverflow等站点对这类无UA的请求兼容性更高,所以可以正常获取内容。

修复方案

1. WebRequest 版本修改

var webRequest = WebRequest.Create(SourceUrl);
// 添加浏览器User-Agent头,模拟正常浏览器请求
webRequest.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36");
// 可选添加Accept头,进一步降低被拦截概率
webRequest.Headers.Add("Accept", "text/plain,*/*;q=0.9");

// 补充using包裹资源,避免内存泄漏
using (var response = webRequest.GetResponse())
using (var content = response.GetResponseStream())
using (var reader = new StreamReader(content))
{
    string strContent = reader.ReadToEnd();
    HttpContext.Current.Response.Write("Read: " + strContent + "<br />");
}
HttpContext.Current.Response.Flush();
HttpContext.Current.Response.End();

2. WebClient 版本修改

using (WebClient webClient = new WebClient())
{
    // 同样添加User-Agent头
    webClient.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36");
    webClient.DownloadFile(url, @"c:\myfile.txt");
}

额外说明

如果添加UA后仍有问题,可尝试补充Referer、Cookie等请求头匹配浏览器的请求规则。当前.NET生态更推荐使用HttpClient替代已经过时的WebRequest和WebClient,性能和可扩展性更高。

内容的提问来源于stack exchange,提问作者developer_sora

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 21:15:01