C# 此异常是否取决于HTTP请求超时?
我是C语言的新手,我来自Java,我有以下问题 我有一个应用程序必须下载这个XML文件,然后解析它: 问题是,下载过程中的某些时间只是偶尔抛出以下例外,在某些情况下它工作正常,在另一种情况下抛出异常 {无法从传输连接读取数据:现有 远程主机已强制关闭连接。} 正如您在这里看到的,该文件非常大,实际上它的重量为19.46MB: 要将此文件下载到我的代码中,我有类似的内容: 包含主方法的程序类: ImportCPE类扩展了包含所有基本导入函数的类ImportBase.ImportBase,包括从表示为URL的源XML数据下载文件 因此,在我的ImportBase类中,我有以下代码将XML文件下载到字符串对象中:C# 此异常是否取决于HTTP请求超时?,c#,httprequest,C#,Httprequest,我是C语言的新手,我来自Java,我有以下问题 我有一个应用程序必须下载这个XML文件,然后解析它: 问题是,下载过程中的某些时间只是偶尔抛出以下例外,在某些情况下它工作正常,在另一种情况下抛出异常 {无法从传输连接读取数据:现有 远程主机已强制关闭连接。} 正如您在这里看到的,该文件非常大,实际上它的重量为19.46MB: 要将此文件下载到我的代码中,我有类似的内容: 包含主方法的程序类: ImportCPE类扩展了包含所有基本导入函数的类ImportBase.ImportBase,包括从表示
string esito;
esito = downloadXML(sourceFile, new System.IO.FileInfo(".\\temp.xml"));
这是downloadXML方法的代码,它总是在同一个ImportBase类中定义:
在我看来,使用Visual Sturio调试器可以理解,当它尝试在downloadXML方法中执行以下行时会出现问题:
捕获以下异常:{操作已超时}
那么问题是什么呢?可能是因为文件太大,设置的超时时间太短了?所以有时候你可以下载,而在其他情况下你不能
增加请求超时也许我可以解决这个问题 制定人:
myRequest.Timeout = 15000;
增加请求超时也许我可以解决这个问题?你试过了吗?代码不是我的,我正在研究它以在将来修改它,在更改我更喜欢的东西之前问:-p将超时设置为超时。无限,并告诉我们它是否解决了问题
private string downloadXML(Uri sourceFile, System.IO.FileInfo destinationFile)
{
// sourceXML = destinationFile;
//return true;
System.Net.WebRequest myRequest;
myRequest = System.Net.WebRequest.Create(sourceFile);
//if (bProxy)
//{
// myRequest.Proxy = wp;
//}
myRequest.Timeout = 15000;
System.Net.WebResponse myResponse = null;
System.IO.StreamReader reader = null;
System.IO.FileStream destStream = null;
try
{
myResponse = myRequest.GetResponse();
if (destinationFile.Exists)
{
destinationFile.Delete();
}
destStream = destinationFile.Create();
reader = new System.IO.StreamReader(myResponse.GetResponseStream(), System.Text.Encoding.UTF8);
reader.BaseStream.CopyTo(destStream);
//html = reader.ReadToEnd();
sourceXML = destinationFile;
}
catch (System.Net.WebException ex)
{
return ex.Message;
}
finally
{
if (myResponse != null)
{
myResponse.Close();
}
if (reader != null)
{
reader.Close();
}
if (destStream != null)
{
destStream.Close();
}
}
return "";
}
myResponse = myRequest.GetResponse();
myRequest.Timeout = 15000;