【发布时间】:2014-02-12 17:49:32
【问题描述】:
我们有一个文本文件,它会自动生成并放入 Web 服务器。任务是逐行读取文件并将记录插入数据库中。以下代码在 C# 中:
WebRequest request = WebRequest.Create(url);
WebResponse response = request.GetResponse();
StreamReader r = new StreamReader(response.GetResponseStream());
while (r.Peek() > -1)
{
string s = r.ReadLine().Trim();
//insert string into a db.
}
当我这样做时,我不断地得到整个文件,范围从 9000 到 10000 行。另一方面,当我使用以下内容时,有时我会得到一个截断的文件(更少的行)
WebClient client = new WebClient();
StreamReader r = new StreamReader(client.OpenRead(url));
while (r.Peek() > -1)
{
string s = r.ReadLine().Trim();
//insert string into a db.
}
谁能解释其中的区别?为什么结果会不一样?我的印象是 WebClient 只是 HttpWebRequest 的包装器。
【问题讨论】:
-
WebClient OpenRead 方法是 WebRequest 的包装器。事实上,它看起来几乎与您发布的 WebRequest 代码相同。我在 ILSpy 中检查了 WebCLient 以确认。我怀疑问题出在其他地方。你能调试并确认你正在阅读的行是你所期望的吗?
标签: c# webclient webrequest