Guida rapida alla risoluzione dei problemi di WCFWCF Troubleshooting Quickstart

In questo argomento viene elencata una serie di problemi noti rilevati dai clienti durante lo sviluppo di client e servizi WCF.This topic lists a number of known issues customers have run into while developing WCF clients and services. Se il problema rilevato non presente in questo elenco, si consiglia di configurare la traccia del servizio.If the issue you are running into is not in this list, we recommend you configure tracing for your service. In tal modo verrà generato un file di traccia che è possibile visualizzare con il visualizzatore dei file di traccia e verranno ricevute informazioni dettagliate sulle eccezioni che si possono verificare nel servizio.This will generate a trace file that you can view with the trace file viewer and get detailed information about exceptions that may be occurring within the service. Per altre informazioni sulla configurazione della traccia, vedere Configuring Tracing.For more information on configuring tracing, see: Configuring Tracing. Per altre informazioni sul visualizzatore dei file di traccia, vedere Service Trace Viewer Tool (SvcTraceViewer.exe).For more information on the trace file viewer, see: Service Trace Viewer Tool (SvcTraceViewer.exe).

  1. Dopo aver installato Windows 7 e IIS, quando si tenta di passare al servizio WCF viene visualizzato il seguente messaggio di errore HTTP 404.3 di file non trovatoAfter installing Windows 7 and IIS, when I attempt to browse to a WCF service I get the following error message: HTTP Error 404.3 – Not Found

    Errore HTTP 404.3 - La pagina richiesta non può essere servita a causa della configurazione estensioni.HTTP Error 404.3 – Not FoundThe page you are requesting cannot be served because of the extension configuration. Se la pagina è uno script, aggiungere un gestore.If the page is a script, add a handler. Se il file deve essere scaricato, aggiungere una mappa MIME.If the file should be downloaded, add a MIME map. Errore dettagliato InformationModule StaticFileModule.Detailed Error InformationModule StaticFileModule.

  2. A volte viene restituita un'eccezione MessageSecurityException alla seconda richiesta se il client è inattivo per un periodo di tempo dopo la prima richiesta. Qual è il problema?Sometimes I receive a MessageSecurityException on the second request if my client is idle for a while after the first request. What is happening?

  3. Il servizio rifiuta nuovi client se sta interagendo già con 10 client. Qual è il problema?My service starts to reject new clients after about 10 clients are interacting with it. What is happening?

  4. È possibile caricare la configurazione del servizio da una posizione diversa dal file di configurazione dell'applicazione WCF?Can I load my service configuration from somewhere other than the WCF application’s configuration file?

  5. Il servizio e il client funzionano correttamente, ma quando il client è in un altro computer non funzionano più. Qual è il problema?My service and client work great, but I can’t get them to work when the client is on another computer? What’s happening?

  6. Quando si genera un'eccezione FaultException<eccezione > in cui il tipo è un'eccezione, viene restituito sempre un tipo FaultException generale sul client e non il tipo generico. Qual è il problema?When I throw a FaultException<Exception> where the type is an exception, I always receive a general FaultException type on the client and not the generic type. What’s happening?

  7. Sembra che le operazioni unidirezionali e request-reply vengano restituite approssimativamente alla stessa velocità quando la risposta non contiene dati. Qual è il problema?It seems like one-way and request-reply operations return at roughly the same speed when the reply contains no data. What's happening?

  8. Utilizzando un certificato X.509 con il servizio viene generata un'eccezione System.Security.Cryptography.CryptographicException. Qual è il problema?I’m using an X.509 certificate with my service and I get a System.Security.Cryptography.CryptographicException. What’s happening?

  9. In seguito alla modifica del primo parametro di un'operazione di passaggio da lettere maiuscole a lettere minuscole, il client genera un'eccezione. Qual è il problema?I changed the first parameter of an operation from uppercase to lowercase; now my client throws an exception. What's happening?

  10. Utilizzando uno degli strumenti di traccia, viene generata un'eccezione EndpointNotFoundException. Qual è il problema?I’m using one of my tracing tools and I get an EndpointNotFoundException. What’s happening?

  11. Quando si chiama un'applicazione HTTP Web WCF da un'applicazione SOAP WCF il servizio restituisce l'errore 405 Metodo non consentitoWhen calling a WCF Web HTTP application from a WCF SOAP application the service returns the following error: 405 Method Not Allowed

Quale è l'indirizzo di base? In che modo è correlato a un indirizzo dell'endpoint?What is the base address? How does it relate to an endpoint address?

Dopo aver installato Windows 7 e IIS, quando si tenta di passare al servizio WCF viene visualizzato il seguente messaggio di errore HTTP 404.3 di file non trovatoAfter installing Windows 7 and IIS, when I attempt to browse to a WCF service I get the following error message: HTTP Error 404.3 – Not Found

Il messaggio di errore completo è:The full error message is:

Errore HTTP 404.3 - La pagina richiesta non può essere servita a causa della configurazione estensioni.HTTP Error 404.3 – Not FoundThe page you are requesting cannot be served because of the extension configuration. Se la pagina è uno script, aggiungere un gestore.If the page is a script, add a handler. Se il file deve essere scaricato, aggiungere una mappa MIME.If the file should be downloaded, add a MIME map. Errore dettagliato InformationModule StaticFileModule.Detailed Error InformationModule StaticFileModule.

Questo messaggio di errore si verifica quando "Attivazione HTTP di Windows Communication Foundation" non è impostata in modo esplicito nel Pannello di controllo.This error message occurs when "Windows Communication Foundation HTTP Activation" is not explicitly set in the Control Panel. Per effettuare questa impostazione accedere al Pannello di controllo e fare clic su Programmi e funzionalità nell'angolo in basso a sinistra della finestra.To set this go to the Control Panel, click Programs in the lower left hand corner of the window. Fare clic su Attivazione o disattivazione delle funzionalità Windows.Click Turn Windows features on or off. Espandere Microsoft .NET Framework 3.5.1. e selezionare Windows Communication Foundation HTTP Activation.Expand Microsoft .NET Framework 3.5.1 and select Windows Communication Foundation HTTP Activation.

A volte viene restituita un'eccezione MessageSecurityException alla seconda richiesta se il client è inattivo per un periodo di tempo dopo la prima richiesta.Sometimes I receive a MessageSecurityException on the second request if my client is idle for a while after the first request. Qual è il problema?What is happening?

La seconda richiesta può non riuscire principalmente per due ragioni: (1) la sessione è scaduta o (2) il server Web che sta ospitando il servizio è stato riciclato.The second request can fail primarily for two reasons: (1) the session has timed out or (2) the Web server that is hosting the service is recycled. Nel primo caso, la sessione è valida fino al timeout del servizio. Quando il servizio non riceve una richiesta dal client entro il periodo di tempo specificato nell'associazione del servizio (ReceiveTimeout), il servizio termina la sessione di sicurezza.In the first case, the session is valid until the service times out. When the service does not receive a request from the client within the period of time specified in the service's binding (ReceiveTimeout), the service terminates the security session. I messaggi client successivi determinano l'eccezione MessageSecurityException.Subsequent client messages result in the MessageSecurityException. Il client deve ristabilire una sessione protetta con il servizio per inviare altri messaggi o utilizzare un token del contesto di sicurezza con stato.The client must re-establish a secure session with the service to send future messages or use a stateful security context token. I token del contesto di sicurezza con stato consentono inoltre a una sessione protetta di restare attiva quando un server Web viene riciclato.Stateful security context tokens also allow a secure session to survive a Web server being recycled. Per ulteriori informazioni sull'uso di token del contesto di sicurezza con stato in una sessione protetta, vedere procedura: creare un Token di contesto di sicurezza per una sessione protetta.For more information about using stateful secure context tokens in a secure session, see How to: Create a Security Context Token for a Secure Session. In alternativa, è possibile disabilitare le sessioni protette.Alternatively, you can disable secure sessions. Quando si utilizza il <wsHttpBinding > binding, è possibile impostare il establishSecurityContext proprietà false disattivare sessioni protette.When you use the <wsHttpBinding> binding, you can set the establishSecurityContext property to false to disable secure sessions. Per disabilitare le sessioni protette per altre associazioni, è necessario creare un'associazione personalizzata.To disable secure sessions for other bindings, you must create a custom binding. Per informazioni dettagliate sulla creazione di un'associazione personalizzata, vedere Procedura: creare un'associazione personalizzata usando SecurityBindingElement.For details about creating a custom binding, see How to: Create a Custom Binding Using the SecurityBindingElement. Prima di applicare qualsiasi opzione, è necessario conoscere i requisiti di sicurezza dell'applicazione.Before you apply any of these options, you must understand your application's security requirements.

Il servizio rifiuta nuovi client se sta interagendo già con 10 client.My service starts to reject new clients after about 10 clients are interacting with it. Qual è il problema?What is happening?

Per impostazione predefinita, i servizi possono gestire solo 10 sessioni simultanee.By default, services can have only 10 concurrent sessions. Pertanto, se le associazioni del servizio utilizzano sessioni, il servizio accetta nuove connessioni client fino a raggiungere quel numero e in seguito rifiuta le nuove connessioni client fino a quando una delle sessioni correnti non viene chiusa.Therefore, if the service bindings use sessions, the service accepts new client connections until it reaches that number, after which it refuses new client connections until one of the current sessions ends. È possibile supportare più client in vari modi.You can support more clients in a number of ways. Se il servizio non richiede le sessioni, non utilizzare un'associazione con sessione.If your service does not require sessions, do not use a sessionful binding. (Per altre informazioni, vedere utilizzando le sessioni.) Un'altra opzione consiste nell'incrementare il limite di sessioni impostando il valore della proprietà MaxConcurrentSessions sul numero adatto alla circostanza.(For more information, see Using Sessions.) Another option is to increase the session limit by changing the value of the MaxConcurrentSessions property to the number appropriate to your circumstance.

È possibile caricare la configurazione del servizio da una posizione diversa dal file di configurazione dell'applicazione WCF?Can I load my service configuration from somewhere other than the WCF application’s configuration file?

È possibile, tuttavia è necessario creare una classe ServiceHost personalizzata che esegue l'override del metodo ApplyConfiguration .Yes, however, you have to create a custom ServiceHost class that overrides the ApplyConfiguration method. All'interno di tale metodo è possibile chiamare la base per caricare la prima configurazione (se si desidera caricare anche le informazioni di configurazione standard), ma si può anche sostituire completamente il sistema di caricamento della configurazione.Inside that method, you can call the base to load configuration first (if you want to load the standard configuration information as well) but you can also entirely replace the configuration loading system. Si noti che se si desidera caricare la configurazione da un file di configurazione diverso dal quello dell'applicazione, è necessario analizzare direttamente il file di configurazione e caricare la configurazione.Note that if you want to load configuration from a configuration file that is different from the application configuration file, you must parse the configuration file yourself and load the configuration.

Nell'esempio di codice seguente viene illustrato come eseguire l'override del metodo ApplyConfiguration e configurare direttamente un endpoint.The following code example shows how to override the ApplyConfiguration method and directly configure an endpoint.

public class MyServiceHost : ServiceHost  
{  
    public MyServiceHost(Type serviceType, params Uri[] baseAddresses)    
      : base(serviceType, baseAddresses)  
    {
        Console.WriteLine("MyServiceHost Constructor");
    }  

    protected override void ApplyConfiguration()  
    {  
        string straddress = GetAddress();  
        Uri address = new Uri(straddress);  
        Binding binding = GetBinding();  
        base.AddServiceEndpoint(typeof(IData), binding, address);  
    }  

    string GetAddress()  
    {
        return "http://MyMachine:7777/MyEndpointAddress/";
    }  

    Binding GetBinding()  
    {  
        WSHttpBinding binding = new WSHttpBinding();  
        binding.Security.Mode = SecurityMode.None;  
        return binding;  
    }  
}  

Il servizio e il client funzionano correttamente, ma quando il client è in un altro computer non funzionano più.My service and client work great, but I can’t get them to work when the client is on another computer? Qual è il problema?What’s happening?

In base all'eccezione, i problemi possono essere diversi:Depending upon the exception, there may be several issues:

  • Potrebbe essere necessario modificare gli indirizzi dell'endpoint del client sul nome host anziché su "localhost".You might need to change the client endpoint addresses to the host name and not "localhost".

  • Potrebbe essere necessario aprire la porta all'applicazione.You might need to open the port to the application. Per informazioni dettagliate, vedere Firewall Instructions negli esempi di SDK.For details, see Firewall Instructions from the SDK samples.

  • Per altri possibili problemi, vedere l'argomento di esempi esecuzione degli esempi di in un gruppo di lavoro tra più computer.For other possible issues, see the samples topic Running the Samples in a Workgroup and Across Machines.

  • Se il client sta utilizzando le credenziali di Windows e l'eccezione è SecurityNegotiationException, configurare Kerberos come descritto di seguito.If your client is using Windows credentials and the exception is a SecurityNegotiationException, configure Kerberos as follows.

    1. Aggiungere le credenziali di identificazione all'elemento dell'endpoint nel file App.config del client:Add the identity credentials to the endpoint element in the client’s App.config file:

      <endpoint   
        address="http://MyServer:8000/MyService/"   
        binding="wsHttpBinding"   
        bindingConfiguration="WSHttpBinding_IServiceExample"   
        contract="IServiceExample"   
        behaviorConfiguration="ClientCredBehavior"   
        name="WSHttpBinding_IServiceExample">  
        <identity>  
          <userPrincipalName value="name@corp.contoso.com"/>  
        </identity>  
      </endpoint>  
      
    2. Eseguire il servizio indipendente con l'account System o NetworkService.Run the self-hosted service under the System or NetworkService account. È possibile eseguire questo comando per creare una finestra di comando con l'account System:You can run this command to create a command window under the System account:

      at 12:36 /interactive "cmd.exe"  
      
    3. Ospitare il servizio in Internet Information Services (IIS) che, per impostazione predefinita, utilizza l'account del nome dell'entità servizio (SPN).Host the service under Internet Information Services (IIS), which, by default, uses the service principal name (SPN) account.

    4. Registrare un nuovo SPN nel dominio utilizzando SetSPN.Register a new SPN with the domain using SetSPN. Si noti che è necessario essere un amministratore di dominio per poter eseguire questa operazione.Note that you will need to be a domain administrator in order to do this.

Per ulteriori informazioni sul protocollo Kerberos, vedere concetti di sicurezza usati in WCF e:For more information about the Kerberos protocol, see Security Concepts Used in WCF and:

Quando si genera un'eccezione FaultException<eccezione > in cui il tipo è un'eccezione, viene restituito sempre un tipo FaultException generale sul client e non il tipo generico.When I throw a FaultException<Exception> where the type is an exception, I always receive a general FaultException type on the client and not the generic type. Qual è il problema?What’s happening?

È consigliabile creare un tipo di dati dell'errore personalizzato e dichiararlo come tipo di dettaglio nel contratto di errore.It is highly recommended that you create your own custom error data type and declare that as the detail type in your fault contract. Ciò è necessario in quanto, se si utilizzano tipi di eccezione forniti dal sistema:The reason is that using system-provided exception types:

  • Viene creata una dipendenza dal tipo che rimuove uno dei maggiori punti di forza delle applicazioni orientate ai servizi.Creates a type dependency that removes one of the biggest strengths of service-oriented applications.

  • Non è possibile dipendere dalla serializzazione delle eccezioni in modo standard.Cannot depend upon exceptions serializing in a standard way. Alcuni casi, come SecurityException, potrebbero non essere affatto serializzabili.Some—like SecurityException—may not be serializable at all.

  • Vengono esposti dettagli di implementazione interni ai client.Exposes internal implementation details to clients. Per ulteriori informazioni, vedere specifica e gestione degli errori in contratti e servizi.For more information, see Specifying and Handling Faults in Contracts and Services.

Se si sta eseguendo il debug di un'applicazione, tuttavia, è possibile serializzare le informazioni sull'eccezione e restituirle al client utilizzando la classe ServiceDebugBehavior .If you are debugging an application, however, you can serialize exception information and return it to the client by using the ServiceDebugBehavior class.

Sembra che le operazioni unidirezionali e request-reply vengano restituite approssimativamente alla stessa velocità quando la risposta non contiene dati.It seems like one-way and request-reply operations return at roughly the same speed when the reply contains no data. Qual è il problema?What's happening?

Per operazione unidirezionale si intende che il contratto dell'operazione accetta un messaggio di input e non restituisce un messaggio di output.Specifying that an operation is one way means only that the operation contract accepts an input message and does not return an output message. In WCF, tutte le chiamate del client vengono restituite quando i dati in uscita sono stati scritti in rete oppure viene generata un'eccezione.In WCF, all client invocations return when the outbound data has been written to the wire or an exception is thrown. Le operazioni unidirezionali funzionano nello stesso modo e possono generare un'eccezione se il servizio non viene trovato o possono bloccarsi se il servizio non è pronto ad accettare i dati dalla rete.One-way operations work the same way, and they can throw if the service cannot be located or block if the service is not prepared to accept the data from the network. In genere in WCF, di conseguenza chiamate unidirezionali vengano restituite al client più rapidamente rispetto alla richiesta-risposta. ma qualsiasi condizione che rallenta l'invio dei dati in uscita sulla rete rallenta le operazioni unidirezionali e le operazioni request/reply.Typically in WCF, this results in one-way calls returning to the client more quickly than request-reply; but any condition that slows the sending of the outbound data over the network slows one-way operations as well as request-reply operations. Per ulteriori informazioni, vedere servizi unidirezionale e accesso ai servizi tramite Client WCF.For more information, see One-Way Services and Accessing Services Using a WCF Client.

Utilizzando un certificato X.509 con il servizio viene generata un'eccezione System.Security.Cryptography.CryptographicException.I’m using an X.509 certificate with my service and I get a System.Security.Cryptography.CryptographicException. Qual è il problema?What’s happening?

Questa situazione in genere si verifica dopo aver modificato l'account utente utilizzato per eseguire il processo di lavoro IIS.This commonly occurs after changing the user account under which the IIS worker process runs. Ad esempio, in Windows XPWindows XP, se si modifica l'account utente predefinito con cui si esegue Aspnet_wp.exe da ASPNET in un account utente personalizzato, è possibile che si verifichi questo errore.For example, in Windows XPWindows XP, if you change the default user account that the Aspnet_wp.exe runs under from ASPNET to a custom user account, you may see this error. Se si utilizza una chiave privata, il processo che la utilizza dovrà disporre delle autorizzazioni per accedere al file in cui è archiviata tale chiave.If using a private key, the process that uses it will need to have permissions to access the file storing that key.

In questo caso, è necessario assegnare i privilegi di accesso in lettura all'account del processo per il file che contiene la chiave privata.If this is the case, you must give read access privileges to the process's account for the file containing the private key. Ad esempio, se il processo di lavoro IIS è in esecuzione con l'account Bob, è necessario assegnare a Bob l'accesso in lettura al file che contiene la chiave privata.For example, if the IIS worker process is running under the Bob account, then you will need to give Bob read access to the file containing the private key.

Per ulteriori informazioni su come concedere l'accesso all'account utente corretto per il file che contiene la chiave privata per un certificato X.509 specifico, vedere Procedura: rendere accessibili a WCF i certificati X.509.For more information about how to give the correct user account access to the file that contains the private key for a specific X.509 certificate, see How to: Make X.509 Certificates Accessible to WCF.

In seguito alla modifica del primo parametro di un'operazione di passaggio da lettere maiuscole a lettere minuscole, il client genera un'eccezione.I changed the first parameter of an operation from uppercase to lowercase; now my client throws an exception. Qual è il problema?What's happening?

Il valore dei nomi di parametro nella firma dell'operazione fa parte del contratto e supporta la distinzione tra maiuscole e minuscole.The value of the parameter names in the operation signature are part of the contract and are case-sensitive. Utilizzare l'attributo System.ServiceModel.MessageParameterAttribute quando è necessario distinguere tra il nome del parametro locale e i metadati che descrivono l'operazione per le applicazioni client.Use the System.ServiceModel.MessageParameterAttribute attribute when you need to distinguish between the local parameter name and the metadata that describes the operation for client applications.

Utilizzando uno degli strumenti di traccia, viene generata un'eccezione EndpointNotFoundException.I’m using one of my tracing tools and I get an EndpointNotFoundException. Qual è il problema?What’s happening?

Se si utilizza uno strumento di traccia che non è il meccanismo di traccia WCF fornita dal sistema e si riceve un EndpointNotFoundException che indica una mancata corrispondenza del filtro indirizzo, è necessario usare il ClientViaBehavior classe per indirizzare i messaggi all'utilità di traccia e fare in modo che l'utilità reindirizzi tali messaggi all'indirizzo del servizio.If you are using a tracing tool that is not the system-provided WCF tracing mechanism and you receive an EndpointNotFoundException that indicates that there was an address filter mismatch, you need to use the ClientViaBehavior class to direct the messages to the tracing utility and have the utility redirect those messages to the service address. La classe ClientViaBehavior modifica l'intestazione di indirizzamento Via per specificare il successivo indirizzo di rete separatamente dal destinatario finale, indicato dall'intestazione di indirizzamento To .The ClientViaBehavior class alters the Via addressing header to specify the next network address separately from the ultimate receiver, indicated by the To addressing header. Durante questa modifica è importante tuttavia non modificare l'indirizzo dell'endpoint che viene utilizzato per stabilire il valore To .When doing this, however, do not change the endpoint address, which is used to establish the To value.

Nell'esempio di codice seguente viene illustrato un file di configurazione client di esempio.The following code example shows an example client configuration file.

<endpoint   
  address=http://localhost:8000/MyServer/  
  binding="wsHttpBinding"  
  bindingConfiguration="WSHttpBinding_IMyContract"  
  behaviorConfiguration="MyClient"   
  contract="IMyContract"   
  name="WSHttpBinding_IMyContract">  
</endpoint>  
<behaviors>  
  <endpointBehaviors>  
    <behavior name="MyClient">  
      <clientVia viaUri="http://localhost:8001/MyServer/"/>  
    </behavior>  
  </endpointBehaviors>  
</behaviors>  

Quale è l'indirizzo di base?What is the base address? In che modo è correlato a un indirizzo dell'endpoint?How does it relate to an endpoint address?

Un indirizzo di base è l'indirizzo radice per una classe ServiceHost .A base address is the root address for a ServiceHost class. Per impostazione predefinita, se si aggiunge una classe ServiceMetadataBehavior alla configurazione del servizio, il linguaggio di descrizione dei servizi Web (WSDL, Web Services Description Language) per tutti gli endpoint che l'host pubblica viene recuperato dall'indirizzo di base HTTP, oltre che da qualsiasi indirizzo relativo fornito al comportamento dei metadati, più "?wsdl".By default, if you add a ServiceMetadataBehavior class into your service configuration, the Web Services Description Language (WSDL) for all endpoints the host publishes are retrieved from the HTTP base address, plus any relative address provided to the metadata behavior, plus "?wsdl". Se si ha familiarità con ASP.NETASP.NET e IIS, l'indirizzo di base è equivalente alla directory virtuale.If you are familiar with ASP.NETASP.NET and IIS, the base address is equivalent to the virtual directory.

Condivisione di una porta tra un endpoint servizio e un endpoint MEX utilizzando NetTcpBindingSharing a port between a service endpoint and a mex endpoint using the NetTcpBinding

Se si specifica l'indirizzo di base per un servizio come net.tcp://MioServer:8080/MioServizio e si aggiungono gli endpoint seguenti:If you specify the base address for a service as net.tcp://MyServer:8080/MyService and add the following endpoints:

<services>  
  <service name="Microsoft.Samples.NetTcp.CalculatorService">  
    <endpoint address="calcsvc" binding ="netTcpBinding" contract="Microsoft.Samples.NetTcp.ICalculator"/>  
    <endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange" />  
  </service>  
</services>  

Se inoltre si modifica una delle impostazioni NetTcpBinding come illustrato nel frammento di configurazione seguente:And if you modify one of the NetTcpBinding settings as shown in the following configuration snippet:

<bindings>  
  <netTcpBinding>  
    <binding closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions" hostNameComparisonMode="StrongWildcard" listenBacklog="10" maxBufferPoolSize="524288" maxBufferSize="65536" maxConnections="11" maxReceivedMessageSize="65536">  
      <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384"/>  
      <reliableSession ordered="true" inactivityTimeout="00:10:00" enabled="false"/>  
      <security mode="Transport">  
        <transport clientCredentialType="Windows" protectionLevel="EncryptAndSign"/>  
      </security>  
    </binding>  
  </netTcpBinding>  
</bindings>  

Verrà visualizzato un errore simile al seguente: eccezione non gestita: AddressAlreadyInUseException: esiste già un listener su 0.0.0.0:9000 endpoint IP è possibile risolvere l'errore specificando un URL completo con una porta diversa per l'endpoint MEX come illustrato nel frammento di configurazione seguenti:You will see an error like the following: Unhandled Exception: System.ServiceModel.AddressAlreadyInUseException: There is already a listener on IP endpoint 0.0.0.0:9000 You can work around this error by specifying a fully qualified URL with a different port for the MEX endpoint as shown in the following configuration snippet:

<services>  
  <service name="Microsoft.Samples.NetTcp.CalculatorService">  
    <endpoint address="calcsvc" binding ="netTcpBinding" contract="Microsoft.Samples.NetTcp.ICalculator"/>  
    <endpoint address="net.tcp://localhost:9001/servicemodelsamples/mex" binding="mexTcpBinding" contract="IMetadataExchange" />  
  </service>  
</services>  

Quando si chiama un'applicazione HTTP Web WCF da un'applicazione SOAP WCF il servizio restituisce l'errore 405 Metodo non consentitoWhen calling a WCF Web HTTP application from a WCF SOAP application the service returns the following error: 405 Method Not Allowed

La chiamata di un'applicazione HTTP Web WCF (un servizio che utilizza il WebHttpBinding e WebHttpBehavior) da un servizio WCF potrebbe generare l'eccezione seguente: Unhandled Exception: System.ServiceModel.FaultException1[System.ServiceModel.ExceptionDetail]: il server remoto ha restituito una risposta non prevista : (405) metodo non consentito.' questa eccezione si verifica perché WCF sovrascrive in uscita OperationContext con in ingresso OperationContext.Calling a WCF Web HTTP application (a service that uses the WebHttpBinding and WebHttpBehavior) from a WCF service may generate the following exception: Unhandled Exception: System.ServiceModel.FaultException1[System.ServiceModel.ExceptionDetail]: The remote server returned an unexpected response: (405) Method Not Allowed.` This exception occurs because WCF overwrites the outgoing OperationContext with the incoming OperationContext. Per risolvere questo problema, creare un oggetto OperationContextScope all'interno dell'operazione del servizio HTTP Web WCF.To solve this problem create an OperationContextScope within the WCF Web HTTP service operation. Ad esempio:For example:

public string Echo(string input)  
{  
    using (new OperationContextScope(this.InnerChannel))  
    {  
        return base.Channel.Echo(input);  
    }  
}  

Vedere ancheSee Also

Debug degli errori di autenticazione di WindowsDebugging Windows Authentication Errors