Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Errore web service: The connection was closed unexpectedly

    Ciao a tutti, ho un problema con il trasferimento di alcuni dati da un db ad un altro tramite web service.

    Ho creato un servizio web in questo modo:

    <WebService(Namespace:="http://tempuri.org/")> _
    <WebServiceBinding(ConformsTo:=WsiProfiles.BasicPr ofile1_1)> _
    <Global.Microsoft.VisualBasic.CompilerServices.Des ignerGenerated()> _
    Public Class GestioneUpdate
    Inherits System.Web.Services.WebService

    // Web Methods

    End Class

    richiamo questo servizio dalla mia applicazione inizializzandolo così:

    Dim virDirWSWeb As String = DIRVIRTUALE
    accountServizioUpdate = New GestioneUpdate.AuthHeaderVB
    accountServizioUpdate.Username = NOMEUTENTE
    accountServizioUpdate.Password = PASSWORD
    p = New GestioneUpdate.GestioneUpdate
    If serverWebInternet.IndexOf(HTTP) >= 0 Then
    p.Url = serverWebInternet & "/" & virDirWSWeb & "/GestioneUpdate.asmx"
    Else
    p.Url = HTTP & serverWebInternet & "/" & virDirWSWeb & "/GestioneUpdateOrdiniWeb.asmx"
    End If
    p.Timeout = TIMEOUT_SERVIZI_WEB
    p.AuthHeaderVBValue = accountServizioUpdate


    durante il trasferimento a volte però viene visualizzato il seguente errore:

    System.Net.WebException: The underlying connection was closed: The connection was closed unexpectedly.
    at System.Web.Services.Protocols.WebClientProtocol.Ge tWebResponse(WebRequest request)
    at System.Web.Services.Protocols.HttpWebClientProtoco l.GetWebResponse(WebRequest request)
    at System.Web.Services.Protocols.SoapHttpClientProtoc ol.Invoke(String methodName, Object[] parameters)...

    mi sono documentato un pò in rete e ho visto che è un problema noto (http://weblogs.asp.net/jan/archive/2...28/63771.aspx, http://blog.josh420.com/archives/200...exception.aspx), ma ancora devo ben capire il modo per risolverlo.

    Da quanto c'è scritto negli articoli dovrei sovrascrivere il metodo GetWebRequest con il seguente codice:

    Protected Overrides Function GetWebRequest(ByVal uri As System.Uri) As System.Net.WebRequest
    Dim webRequest As HttpWebRequest = DirectCast(MyBase.GetWebRequest(uri), HttpWebRequest)
    webRequest.KeepAlive = False

    // oppure inserendo webRequest.ConnectionGroupName = Guid.NewGuid().ToString()
    // non ho ancora ben capito quale dei due settaggi bisogna usare

    Return webRequest
    End Function

    il mio problema è che se, nel reference.vb del servizio, inserisco questo codice non mi viene riconosciuto, mi dice che il metodo GetWebRequest non appartiene il namespace. Ho provato anche ad inserirlo nella classe da cui richiamo il servizio ma mi dice che il metodo GetWebRequest non può essere sovrascritto.

    Non è possibile imposare i parametri della richiesta in altro modo? O in alternativa sapete indicarmi qualche altro tipo di soluzione?

    Vi ringrazio in anticipo per ogni informazione.
    Luca >> http://www.pollosky.it

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2006
    Messaggi
    559
    strano,
    prova a fare cosi:

    vai nella classe proxy che ti viene generata
    posizionati in un punto "vuoto" della classe

    comincia a scrivere la parola chiave overrides

    automaticamente visual studio ti propone i metodi che puoi sovrascrivere.
    e il tuo lo trova!
    se nella vita avro avuto la possiblita di aiutare qualcuno non avro vissuto invano (E. Dikinson)

  3. #3
    Ho inserito il codice nel reference.vb (dovrebbe essere la classe proxy se non sbaglio) del web reference settato nell'applicativo e sembra tutto ok...ora nel reference.vb ho un codice di questo tipo.
    codice:
    Namespace GestioneUpdate
    
    '''<remarks/>
    <System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "2.0.50727.1433"), _
    System.Diagnostics.DebuggerStepThroughAttribute(), _
    System.ComponentModel.DesignerCategoryAttribute("code"), _
    System.Web.Services.WebServiceBindingAttribute(Name:="GestioneUpdateSoap", [Namespace]:="http://tempuri.org/"), _
    System.Xml.Serialization.XmlIncludeAttribute(GetType(Object()))> _
    Partial Public Class GestioneUpdate
    Inherits System.Web.Services.Protocols.SoapHttpClientProtocol
    
    Protected Overrides Function GetWebRequest(ByVal uri As System.Uri) As System.Net.WebRequest
    Dim webRequest As HttpWebRequest = DirectCast(MyBase.GetWebRequest(uri), HttpWebRequest)
    webRequest.KeepAlive = False
    webRequest.ConnectionGroupName = Guid.NewGuid().ToString()
    Return webRequest
    End Function
    
    Private authHeaderVBValueField As AuthHeaderVB
    
    Private GetSizeArchivioOperationCompleted As System.Threading.SendOrPostCallback
    
    .
    .
    .
    End Class
    
    End Namespace
    pensi che così possa andar bene?

    per quanto riguarda il codice ho inserito entrambi i settaggi segnalati nel post...non dovrei aver problemi in questo modo (credo). Che ne pensate?
    Luca >> http://www.pollosky.it

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2006
    Messaggi
    559
    ad occhio direi che va benissimo!
    se nella vita avro avuto la possiblita di aiutare qualcuno non avro vissuto invano (E. Dikinson)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.