Risolvere i problemi relativi alle esercitazioni introduzione a Windows Communication Foundation
Questo articolo fornisce soluzioni per i problemi e gli errori più comuni che è possibile affrontare quando si seguono i passaggi descritti nell'esercitazione: Introduzione alle applicazioni di Windows Communication Foundation.
Problemi comuni
Non riesco a trovare i file di progetto sul disco rigido.
Visual Studio salva i file di progetto in C:\Users\<nome> utente\source\repos.
Non riesco a trovare il file App.config generato da Svcutil.exe.
In Visual Studio la finestra Aggiungi elemento esistente visualizza solo i file con le estensioni seguenti per impostazione predefinita:
- .Cs
- resx
- .Impostazioni
- xsd
- .Wsdl
Per visualizzare tutti i tipi di file, selezionare Tutti i file (*.*) nell'elenco a discesa nell'angolo in basso a destra della finestra Aggiungi elemento esistente .
Errori comuni
Compilare l'applicazione di servizio
Errore BC30420 'Sub Main' non trovato in 'GettingStartedHost.Module1'.
Il punto di ingresso non è corretto per l'applicazione Visual Basic. Apportare la modifica seguente:
- Nella finestra Esplora soluzioni selezionare la cartella GettingStartedHost e quindi selezionare Proprietà dal menu di scelta rapida. a. Nella finestra GettingStartedHostselezionareService.Program (o il punto di ingresso per l'applicazione specifica) dall'elenco. b. Dal menu principale selezionare Salva>tutto.
Eseguire l'applicazione di servizio
Impossibile registrare l'URL 'http://+:8000/GettingStarted/CalculatorService'. Il processo non dispone dei diritti di accesso a questo spazio dei nomi.
Per un accesso appropriato, avviare il processo che ospita il servizio Windows Communication Foundation (WCF) con privilegi amministrativi:
- Per Visual Studio: selezionare il programma Visual Studio nel menu Start e quindi selezionare Altro>esegui come amministratore dal menu di scelta rapida.
- Per una finestra della console: selezionare Prompt dei comandi nel menu Start e quindi selezionare Altro>amministratore RunAs dal menu di scelta rapida.
- Per Esplora risorse: selezionare l'eseguibile e quindi selezionare Esegui come amministratore dal menu di scelta rapida.
Compilare l'applicazione client
'CalculatorClient', non contiene una definizione per 'nome> metodo' e nessun metodo di estensione '<nome> metodo' che accetta un primo argomento di tipo '<CalculatorClient' (manca una direttiva usando o un riferimento all'assembly?)
Solo i metodi contrassegnati con l'attributo ServiceOperationAttribute
vengono esposti pubblicamente. Se si omette l'attributo da un metodo nell'interfaccia, viene visualizzato questo messaggio di errore durante la ServiceOperationAttribute
ICalculator
compilazione.
Impossibile trovare il nome del tipo o dello spazio dei nomi "CalculatorClient" (manca una direttiva o un riferimento all'assembly?)
Questo errore viene visualizzato se non si aggiunge il file generatedProxy.cs (o generatedProxy.vb) al progetto client quando vengono generati con lo strumento diSvcutil.exe .
Eseguire l'applicazione client
Eccezione non gestita: System.ServiceModel.EndpointNotFoundException: Impossibile connettersi a 'http://localhost:8000/GettingStarted/CalculatorService'. Codice di errore TCP 10061: Impossibile stabilire la connessione. Rifiuto persistente del computer di destinazione.
Questo errore si verifica se si esegue l'applicazione client senza prima avviare il servizio. Eseguire prima di tutto l'applicazione host per avviare il servizio e quindi eseguire l'applicazione client.
Usare lo strumento Svcutil.exe
'Svcutil' non viene riconosciuto come un comando interno o esterno, programma operabile o file batch.
Svcutil.exe deve trovarsi nel percorso di sistema. La soluzione più semplice consiste nell'usare il prompt dei comandi di Visual Studio. Dal menu Start selezionare la directory Visual Studio <versione>, quindi selezionare Prompt dei comandi per gli sviluppatori per VS <versione>. Questo prompt dei comandi imposta il percorso di sistema sui percorsi corretti per tutti gli strumenti forniti come parte di Visual Studio.
Eseguire il servizio e le applicazioni client
System.ServiceModel.Security.SecurityNegotiationException: negoziazione della sicurezza SOAP con '' per la destinazione 'http://localhost:8000/GettingStarted/CalculatorServicehttp://localhost:8000/GettingStarted/CalculatorService' non riuscita
Questo errore si verifica in un computer aggiunto al dominio che non dispone della connettività di rete. Connettere il computer alla rete o disattivare la sicurezza sia per il servizio che per il client.
Per disattivare la sicurezza:
Per il servizio sostituire il codice che crea
WSHttpBinding
con il codice seguente:// Step 3: Add a service endpoint. selfhost.AddServiceEndpoint(typeof(ICalculator), new WSHttpBinding(SecurityMode.None), "CalculatorService");
Per il client, nel file di configurazione aggiornare l'elemento di sicurezza> nell'elemento<<di associazione> come indicato di seguito:
<binding name="WSHttpBinding_ICalculator"> <security mode="None" /> </binding>
Vedi anche
Introduzione alle applicazioni WCF
Guida introduttiva alla risoluzione dei problemi di WCF
Risoluzione dei problemi di configurazione