Question

Je peux travailler avec beaucoup de liaisons WCF, à l'exception netMsmqBinding. Tout ce que je get est:

  

CommunicationObjectFaultedException: "L'objet de communication, System.ServiceModel.ServiceHost, ne peut pas être utilisé pour la communication car il est dans l'état Faulted"

     

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

Je l'ai essayé dans un Windows Server 2008 R2 avec les fonctionnalités suivantes installé

  • Message Queuing
  • Services Message Queuing
  • Message Queuing serveur
  • Déclencheurs Message Queuing
  • Support HTTP
  • Multicast soutien
  • Message Queuing Proxy DCOM

J'ai essayé aussi d'ajouter manuellement une file d'attente dans le privé Message Server Manager, mais il ne fonctionne pas.

J'utilise un service Windows pour héberger mon MSMQ. Mon contrat de service est

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; }
}
}

Et mon app.config contient

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

et

<netMsmqBinding>
  <binding name="tolerant"
         maxReceivedMessageSize="2147483647"
         >
    <readerQuotas maxArrayLength="2147483647" />
    <security mode="None"/>
  </binding>
</netMsmqBinding>
Était-ce utile?
scroll top