Я могу работать со многими привязками WCF, кроме netMsmqBinding
. Все, что я получаю, это:
CommunicationObjectFaptedException: «Объект связи, System.ServiceModel.ServiceHost, не может использоваться для связи, поскольку он находится в состоянии Failed.»
в System.ServiceModel.Channels.CommunicationObject.Close (TimeSpan timeout)
Я пробовал это в Windows Server 2008 R2 со следующими установленными функциями
- Очередь сообщений
- Службы очереди сообщений
- Сервер очереди сообщений
- Триггеры очереди сообщений
- Поддержка HTTP
- Поддержка многоадресной рассылки
- Служба очереди сообщений DCOM Proxy
Я также пытался вручную добавить личную очередь сообщений в диспетчере сервера, но она не работала.
Я использую службу Windows для размещения своего MSMQ.
Мой сервисный контракт
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; }
}
}
И мой app.config содержит
<endpoint
address="net.msmq://localhost/private/ServiceName"
binding="netMsmqBinding"
contract="MyCompany.Services.IServiceName"
bindingConfiguration="tolerant"
behaviorConfiguration="tolerant"
/>
и
<netMsmqBinding>
<binding name="tolerant"
maxReceivedMessageSize="2147483647"
>
<readerQuotas maxArrayLength="2147483647" />
<security mode="None"/>
</binding>
</netMsmqBinding>