Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 此异常是否取决于HTTP请求超时?_C#_Httprequest - Fatal编程技术网

C# 此异常是否取决于HTTP请求超时?

C# 此异常是否取决于HTTP请求超时?,c#,httprequest,C#,Httprequest,我是C语言的新手,我来自Java,我有以下问题 我有一个应用程序必须下载这个XML文件,然后解析它: 问题是,下载过程中的某些时间只是偶尔抛出以下例外,在某些情况下它工作正常,在另一种情况下抛出异常 {无法从传输连接读取数据:现有 远程主机已强制关闭连接。} 正如您在这里看到的,该文件非常大,实际上它的重量为19.46MB: 要将此文件下载到我的代码中,我有类似的内容: 包含主方法的程序类: ImportCPE类扩展了包含所有基本导入函数的类ImportBase.ImportBase,包括从表示

我是C语言的新手,我来自Java,我有以下问题

我有一个应用程序必须下载这个XML文件,然后解析它:

问题是,下载过程中的某些时间只是偶尔抛出以下例外,在某些情况下它工作正常,在另一种情况下抛出异常

{无法从传输连接读取数据:现有 远程主机已强制关闭连接。}

正如您在这里看到的,该文件非常大,实际上它的重量为19.46MB:

要将此文件下载到我的代码中,我有类似的内容:

包含主方法的程序类:

ImportCPE类扩展了包含所有基本导入函数的类ImportBase.ImportBase,包括从表示为URL的源XML数据下载文件

因此,在我的ImportBase类中,我有以下代码将XML文件下载到字符串对象中:

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;