Come posso modificare il limite di tempo per webClient.UploadData()?

Sto usando WebClient.UploadData() di fare un post su un server Java. Come posso estendere il limite di tempo? (Scade ogni volta che sto cercando di fare un po di debug)

InformationsquelleAutor Grzenio | 2009-08-06

 

2 Replies
  1. 53

    WebClient non ha un timeout di proprietà, tuttavia è possibile ereditare da WebClient per dare accesso al Timeout interno WebRequest utilizzato:

     public class WebClientEx : WebClient
     {
         public int Timeout {get; set;}
    
         protected override WebRequest GetWebRequest(Uri address)
         {
            var request = base.GetWebRequest(address);
            request.Timeout = Timeout;
            return request;
         }
     }

    Uso:

     var myClient = new WebClientEx();
     myClient.Timeout = 900000 //Daft timeout period
     myClient.UploadData(myUri, myData);
    • Grande risposta. FYI ho usato questo e funziona anche con WebClient.UploadValues()
  2. 2

    Così, per coloro che codice in VB…

    Public Class WebClientExtended
        Inherits WebClient
        Public Property Timeout() As Integer
            Get
                Return m_Timeout
            End Get
            Set(value As Integer)
                m_Timeout = value
            End Set
        End Property
        Private m_Timeout As Integer
    
        Protected Overrides Function GetWebRequest(address As Uri) As WebRequest
            Dim request = MyBase.GetWebRequest(address)
            request.Timeout = Timeout
            Return request
        End Function
    End Class
    
    Function UploadFile(ByVal URL As String, ByVal FilePath As String, ByVal FileName As String)
    
        'Call API to Upload File
        Dim myWebClient As New WebClientExtended
        myWebClient.Timeout = 10 * 60 * 1000
        Dim responseArray As Byte()
        Dim responseString As String = ""
    
        Try
            responseArray = myWebClient.UploadFile(URL, FilePath + "/" + FileName)
            responseString = System.Text.Encoding.ASCII.GetString(responseArray)
        Catch ex As Exception
            responseString = "Error: " + ex.Message
        End Try
    
        Return responseString
    
    End Function

Lascia un commento