Ciao a tutti,
ho aggiunto in VS2013 un service reference specificando il WSDL e il namespace. Viene aggiunto correttamente. Ora accade questo:
Richiamo il WS e funziona correttamente, eseguo i miei test e chiudo. Rilancio e non funziona più con il seguente errore:
An exception of type 'System.ServiceModel.CommunicationException' occurred in mscorlib.dll but was not handled in user code

Additional information: Errore durante la ricezione della risposta HTTP a http://..../Server.php. È possibile che il binding dell'endpoint del servizio non utilizzi il protocollo HTTP o che un contesto di richiesta HTTP sia stato interrotto dal server (probabilmente a causa dell'arresto del server). Per ulteriori informazioni, vedere i registri del server.
con eccezione interna:
Connessione in corso interrotta forzatamente dall'host remoto

Chi ha creato il WS sostiene che non ci sono blocchi su ip o simili e che il ws funziona correttamente.
Ho notato che se killo il processo w3wp.exe il ws torna a funzionare (ma non accade sempre).
Il codice del WS è il seguente:
MioWS serviceStart = null;
try
{
    serviceStart = new MioWS ();
                
    serviceStart.ClientCredentials.UserName.UserName = "x";
    serviceStart.ClientCredentials.UserName.Password = "x";
    serviceStart.Open();
    MioRisultato risultatiStart = serviceStart.GetMioRisultato();
...
}
finally
{
    if (serviceStart != null)
       serviceStart.Close();
}

Il web.config:
<system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding name="MyServiceStart" sendTimeout="00:05:00">
<!-- inizio aggiunta a mano -->
          <security mode="TransportCredentialOnly">
            <transport clientCredentialType="Basic" />
          </security>  <!-- fine aggiunta a mano -->
        </binding>        
      </basicHttpBinding>
    </bindings>
    <client>
      <endpoint address="http://.../Server.php"
        binding="basicHttpBinding" bindingConfiguration="MyServiceStart"
        contract="MyServiceStartService" name="MyServiceStart" />
    </client>
  </system.serviceModel>

Modificato da manuel0081 il 19 gennaio 2015 11.45 -

Ormai programmano tutti... ma la professionalità appartiene a pochi
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao Manuel,


Connessione in corso interrotta forzatamente dall'host remoto

Non so esattamente quale possa essere la causa ma questo errore è molto specifico. Proverei a fare qualche indagine che possa confermare che è effettivamente il server a chiudere prematuramente la connessione.

So che gli sviluppatori del servizio ti hanno assicurato che funziona normalmente, ma potrebbe anche essere che nel loro server esista un bug tipo questo in cui non si sono ancora imbattuti.

Prova questo: usa Fiddler per tracciare la richiesta che la tua applicazione invia al servizio, poi chiudila.
Puoi ripetere quella richiesta da Fiddler, selezionandola e premendo R. Ripetila varie volte, per scoprire se il problema della connessione interrotta si verifica anche lì.
Se effettivamente si verifica, allora salva la sessione di Fiddler ed inviagliela, così avranno dei dati oggettivi per valutare e risalire al problema.

ciao,
Moreno

Enjoy learning and just keep making
Ciao,
ho installato Fiddler e aggiunto in Application_Start il codice per tracciare le chiamate ai WS (ho provato anche il corrispettivo nel web.config:
System.Net.WebRequest.DefaultWebProxy = new System.Net.WebProxy("127.0.0.1", 8888);

Effettivamente va in errore ma dove verifico il dettaglio dell'errorE? In pratica che informazioni aggiuntive ho?
Ho trovato inspect in new Window e ho trovato questa Response:
[Fiddler] ReadResponse() failed: The server did not return a complete response for this request. Server returned 0 bytes.

EDIT: se attacco FIDDLER con quella riga di codice smette di funzionare.504 Timeout gateway. Mi sembra di aver introdotto un altro livello di errore, infatti senza la riga di codice tutto funziona
Modificato da manuel0081 il 21 gennaio 2015 12.23 -

Ormai programmano tutti... ma la professionalità appartiene a pochi
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao Manuel,

manuel0081 ha scritto:

Effettivamente va in errore ma dove verifico il dettaglio dell'errore? In pratica che informazioni aggiuntive ho?

Putroppo non sembrano esserci ulteriori informazioni aggiuntive. Se il server sta semplicemente troncando la connessione, tu non ricevi alcuna risposta e quindi nessun testo di errore dall'applicazione PHP.

Tuttavia, salvati la sessione Fiddler e mandala agli sviluppatori, almeno puoi dimostrargli che c'è qualcosa che non va.

Se anche loro otterranno lo stesso errore quando provano a ripetere le richieste che hanno trovato nella tua sessione Fiddler, allora probabilmente si convinceranno del fatto che il servizio non sta funzionando come dovrebbe.

Tu del resto puoi solo limitarti a segnalare il problema.

manuel0081 ha scritto:

se attacco FIDDLER con quella riga di codice smette di funzionare.

Quando avvii Fiddler, si imposta già come proxy di default per le richieste HTTP. Dovresti veder passare il traffico anche senza quella riga di codice.

ciao,
Moreno

Enjoy learning and just keep making
ciao,
grazie della risposta.
Senza quella riga di codice non vedo le chiamate ai WS esattamente come firebug o la relativa estensione di Google chrome

Ormai programmano tutti... ma la professionalità appartiene a pochi

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.