1 0 Tag Archives: WCF
post icon

The communication object, System.ServiceModel.Channels.ServiceChannel, cannot be used for communication because it is in the Faulted state.

Nella programmazione SOA oriented, uno dei principali errori che si commette nell’utilizzo dei servizi WCF e creare un’istanza del Transparent Proxy all’interno dello statement using, come segue:

using(ServiceReference.ClientType client = new ServiceReference.ClientType(“EndpointAddress”))
  {
      //faccio qualcosa

  } // <– Questa linea potrebbe generare un errore

L’errore che si riceve è il seguente:

Type: System.ServiceModel.CommunicationObjectFaultedException.
Message: The communication object, System.ServiceModel.Channels.ServiceChannel, cannot be used for communication because it is in the Faulted state.

Questo errore si ottiene, in generale, quando il servizio è in uno stato di Fault (guasto), quindi non accessibile, ma nella maggior parte dei casi quando non è stato gestito correttamente il Dispose del proxy client, per cui le chiamate successive alla prima troveranno il servizio nello stato di Fault.

Per una corretta gestione della distruzione (Dispose) del proxy client utilizzare lo statement Try Catch arricchito con il Finally, come indicato di seguito:

ServiceReference.ClientType client = null;

try
{
	client = new ServiceReference.ClientType("EndpointAddress");
	client.Open();

	//do stuff
}
catch (Exception e)
{
	//do stuff
}
finally
{
	if(client != null)
	{
		if (client.State == CommunicationState.Opened)
			client.Close();
		else if (client.State == CommunicationState.Faulted)
			client.Abort();
	}
}

E’ possibile trovare riferimenti puntuali sull’MSDN al seguente articolo: Evitare problemi con l’uso dello statement using.

30 novembre 2011 @ 13:14
post icon

WCF SOA Hello World – Windows Communication Foundation Service Oriented Architecture Hello World

Ho avuto il piacere di cominciare a studiare WCF e voglio condividere con voi un’ applicazione SOA Hello World che ho creato per cominciare a studiare.

L’applicazione è disponibile qui: HelloWorldWCF.zip (34,25 kb)

Prerequisiti

– Framework.NET 3.5

– Visual Studio 2008

Seguire i seguenti passaggi per la configurazione della Solution:

  1. Estrarre l’archivio in una cartella a piacere (ad esempio C:\)
  2. Creare su IIS un Web Site che faccia da Host per il Servizio ProductRetriever.svc in modo che il servizio sia raggiungibile al seguente indirizzo: http://localhost/ProductRetriever.svc
  3. Configurare IIS in modo che abbia un nuovo Handler per il tipo *.svc come segue:
    1. Navigare da command fino alla cartella “C:\windows\Microsoft.Net\Framework\v3.0\Windows Communication Foundation”
    2. Eseguire il comando ServiceModelReg -iIl risultato sarà il seguente:

Eseguendo l’applicazione web compresa nella solution si può vedere come consumare il servizio SOA ProductRetriever.svc

Enjoy snippet!

4 maggio 2010 @ 16:25