Condividi tramite


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:

  1. 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 ServiceOperationAttributeICalculator 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