sto ottenendo questa eccezione:Come assicurarsi di non ottenere un'eccezione di stato Fault Faultata?
L'oggetto di comunicazione, System.ServiceModel.Channels.ServiceChannel, non può essere utilizzato per la comunicazione perché è in stato di errore.
Il servizio WCF utilizza il valore predefinito wsHttpBinding. Sto usando WCF nel modo seguente ovunque io sto usando:
using (var proxy = new CAGDashboardServiceClient())
{
proxy.Open();
var result = proxy.GetSiteForRegion(ddlRegions.SelectedValue);
ddlSites.DataSource = result;
ddlSites.DataBind();
proxy.Close();
}
La linea di errore mostrato nel messaggio sembra essere dopo l'ultima proxy.close. Non sono sicuro di cosa sta succedendo. Sto lanciando il servizio all'interno di Visual Studio 08.
Ecco le informazioni di traccia:
The communication object, System.ServiceModel.Channels.ServiceChannel, cannot be used for communication because it is in the Faulted state.
Server stack trace:
at System.ServiceModel.Channels.CommunicationObject.Close(TimeSpan timeout)
Exception rethrown at [0]:
at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
at System.ServiceModel.ICommunicationObject.Close(TimeSpan timeout)
at System.ServiceModel.ClientBase`1.System.ServiceModel.ICommunicationObject.Close(TimeSpan timeout)
at System.ServiceModel.ClientBase`1.Close()
at System.ServiceModel.ClientBase`1.System.IDisposable.Dispose()
at CAGDashboard.UserControls.ucVolunteerCRUDGrid.ddlRegions_SelectedIndexChanged(Object sender, EventArgs e) in C:\Documents and Settings\rballalx\My Documents\Visual Studio 2008\Projects\DashboardCAG\CAGDashboard\UserControls\ucVolunteerCRUDGrid.ascx.cs:line 81
at System.Web.UI.WebControls.ListControl.OnSelectedIndexChanged(EventArgs e)
at System.Web.UI.WebControls.DropDownList.RaisePostDataChangedEvent()
at System.Web.UI.WebControls.DropDownList.System.Web.UI.IPostBackDataHandler.RaisePostDataChangedEvent()
at System.Web.UI.Page.RaiseChangedEvents()
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
grazie !! ho provato senza usare anche la dichiarazione ... senza successo :( – Perpetualcoder
Ho scritto un codice wrapper che aiuta con il WCF + usando il problema del blocco http://nimtug.org/blogs/damien-mcgivern/archive/2009/05/26/ wcf-CommunicationObjectFaultedException-quot-non può-essere-usato-per-comunicazione-perché-è-in-the-guasto-state-quot-messagesecurityexception-quot-an-error-occurred-quando-verifica-sicurezza-per- the-message-quot.aspx –
Ma è IDisposable. "using" è la migliore pratica! –