Domanda

posso lavorare con molti attacchi WCF, tranne netMsmqBinding. Tutto quello che ottiene è:

  

CommunicationObjectFaultedException: "L'oggetto di comunicazione, System.ServiceModel.ServiceHost, non può essere utilizzato per la comunicazione perché è in stato di errore"

     

a System.ServiceModel.Channels.CommunicationObject.Close (TimeSpan timeout)

L'ho provato in un 2008 R2 di Windows Server con funzioni installate le seguenti

  • Message Queuing
  • Message Queuing Services
  • Message Queuing Server
  • Trigger Accodamento messaggi
  • Supporto HTTP
  • Multicasting Supporto
  • Message Queuing DCOM Proxy

ho cercato anche di aggiungere manualmente una coda di messaggi privati ??in Server Manager, ma non ha funzionato.

Sto usando un servizio di Windows per ospitare il mio MSMQ. Il mio contratto di servizio è

namespace MyCompany.Services
{
[ServiceContract(Name = "ServiceName",
                     Namespace = "http://MyCompany/ServiceName")]
public interface IServiceName
{
    [OperationContract(IsOneWay = true)]
    void Insert(MyData[] data);
}
[DataContract]
public class MyData
{
    [DataMember]
    public DateTime DateTime { get; set; }
    [DataMember]
    public double Lat { get; set; }
    [DataMember]
    public double Lon { get; set; }
    [DataMember]
    public TimeSpan Timespan { get; set; }
    [DataMember]
    public Guid Id { get; set; }
    [DataMember(IsRequired = false)]
    public int? Category { get; set; }
}
}

E il mio app.config contiene

  <endpoint
      address="net.msmq://localhost/private/ServiceName"
      binding="netMsmqBinding"
      contract="MyCompany.Services.IServiceName"
      bindingConfiguration="tolerant"
      behaviorConfiguration="tolerant"
      />

e

<netMsmqBinding>
  <binding name="tolerant"
         maxReceivedMessageSize="2147483647"
         >
    <readerQuotas maxArrayLength="2147483647" />
    <security mode="None"/>
  </binding>
</netMsmqBinding>
È stato utile?

Soluzione

Il punto di partenza migliore sarebbe di tre parte post sul blog di Tom Hollander:

e dare un'occhiata bravo alla documentazione MSDN su code in WCF - un sacco di roba lì, troppo

L'errore che stai ricevendo indicherebbe qualche problema con il canale di comunicazione - qualcosa è andato storto, il canale è stato "guasto", cioè reso inutilizzabile. C'è un sacco di motivi che potrebbe accadere, che è davvero difficile da diagnosticare da lontano con quasi qualsiasi informazione.

Controlla le risorse e vedere se questo ti aiuta un passo o due ulteriori - in caso contrario, saremo costretti a ottenere molto di più informazioni da voi

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top