2009-09-02 10 views
8

Sto costruendo un'applicazione .NET 3.5 Winforms che utilizza servizi WCF (associazione wsHttp) per comunicare al mio server che ottiene dati da SQL Server e li restituisce alle Winforms app (Smart Client). Ho notato che da quando eseguo Windows 7 RTM c'è un ritardo di circa 30 secondi la prima volta che la WCF comunica, da quel momento in avanti è normale come prima.chiamate di servizio Web lento (e servizio WCF) da Windows 7

Ho notato che un'altra applicazione (sistema di licenze Desaware) che utilizza i servizi ASMX presenta anche questo stesso problema, un ritardo di avvio quindi va tutto bene.

Questa prima volta che l'avvio non è un problema di compl. .NET/JIT, posso chiudere l'app subito e rifarlo. Il server esegue Windows 2003/IIS 6. Tutto andava bene prima di Windows 7.

Ho provato a rimuovere il mio software anti-virus, lo stesso problema. Non riesco a capire perché ci sia questo ritardo iniziale, significativo a questo. Noto anche nella finestra Debug mentre l'applicazione sta iniziando un ritardo come la linea System.IdentityModel, sembra che ci sia una modifica di sicurezza/autenticazione su Windows 7 presumo che stia causando questo ritardo.

Qualcuno ha qualche suggerimento su come risolvere questo problema? VS 2008/.NET 3.5.

Grazie.

risposta

14

Ho aggiunto la seguente voce nella configurazione di associazione e sembra aver risolto il problema.

useDefaultWebProxy = "false"

+0

Vorrei poter dare più di un upvote; questo mi ha salvato la giornata! Molte grazie! –

0

Un ritardo di 30 secondi, sembra che sia in attesa di qualcosa e poi si interrompe dopo 30 secondi.

Probabilmente è qualcosa a che fare con l'autenticazione tra la tua macchina Windows 7 e il server. Controllare il registro degli eventi sarebbe un buon punto di partenza.

+0

Ho controllato i registri eventi su entrambe le estremità, tutti i controlli sono andati bene. – Neal

+0

La prossima cosa da controllare è la rete. Entrambe le macchine sono nello stesso dominio? Esiste un firewall tra le macchine o tra le macchine e il controller di dominio? Inoltre, prova da Windows XP, nel caso ci sia stato un cambiamento nel codice. –

-1

Questo ha lavorato per il mio Windows 7 e la connessione a un server web

useDefaultWebProxy = "false"

Thank You Douglas

+6

-1: non è esattamente quello che ha detto la risposta precedente? –

2

stavo sperimentando la stessa problema. Creo il mio proxy utilizzando un oggetto ChannelFactory, e ha scoperto che oltre a specificare useDefaultWebProxy per il lato server vincolante, è stato anche necessario specificare l'opzione lato client:

HttpTransportBindingElement httpTransport = new HttpTransportBindingElement 
{ 
    MaxBufferPoolSize = int.MaxValue, 
    MaxBufferSize = int.MaxValue, 
    MaxReceivedMessageSize = int.MaxValue, 
    AuthenticationScheme = System.Net.AuthenticationSchemes.Ntlm, 
    UseDefaultWebProxy = false 
} 

ho scoperto che il problema si è verificato solo quando si utilizzano le credenziali di Windows correnti. Se si passano credenziali specifiche, la prestazione è stata come previsto. Tuttavia, l'impostazione del lato client UseDefaultWebProxy ha risolto il problema.

Spero che questo aiuti qualcuno, da qualche parte!