Ну, так как никто, кажется, не имеет ответа на вопрос, почему сообщения используются, я написал обходной путь в реализации службы, которая использует собственные классы System.Messaging.Это позор, потому что в соответствии с документацией можно отправлять сообщение в очередь без кода (при условии, что конечные точки описаны правильно).
Вот код, который я использовал для всехв этом затруднительном положении.
В проекте консоли хоста я изменил конечную точку App.Config, закомментировав net.msmq и добавив wsHttpBinding, чтобы сделать его обычной службой WCF.
<services>
<service behaviorConfiguration="MetaDataBehaviour" name="Client.AuthenticationService.RegistrationService">
<!-- <endpoint address="net.msmq://localhost/private/authenticationqueue"
binding="netMsmqBinding"
bindingConfiguration="msmq"
name="msmq"
contract="Global.DomainModel.IRegistration" /> -->
<endpoint address="http://localhost:8080/Registration"
binding="wsHttpBinding"
bindingConfiguration=""
contract="Global.DomainModel.IRegistration" />
<endpoint address="mex"
binding="mexHttpBinding"
name="mex"
contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:8080/Registration/" />
</baseAddresses>
</host>
</service>
В службеВ качестве реализации я добавил следующее (оставив исходные операторы Console.WriteLine в целях тестирования:
public void Register(RegistrationMessage message)
{
MessageQueue queue = new MessageQueue(@".\private$\authenticationqueue");
Message msg = new Message();
msg.ResponseQueue = queue;
msg.Label = "AuthenticationMessage";
msg.Body = message;
queue.Send(msg);
Console.WriteLine("e-mail: " + message.EMailAddress);
Console.WriteLine("First Name: " + message.FirstName);
Console.WriteLine("Last Name: " + message.LastName);
}
. Это прекрасно работает и работает, как и ожидалось, увлажняя очередь. Теперь я могу написать основную службу рабочего процесса для использованияэто.
Спасибо Джону за подтверждение того факта, что сообщения фактически были израсходованы. Я бы проголосовал, но мой уровень слишком низкий :)