Я работаю в команде, которая пишет собственную систему управления обучением, которая должна отправлять уведомления по электронной почте при регистрации пользователя на онлайн-курсе.
Я написал тестовое консольное приложение для проверки очередейкопирование сообщений электронной почты в очередь служебной шины Azure, а затем получение и обработка сообщений.
Я создал объект электронной почты
[DataContract(Name = "Email", Namespace = "Email")]
[Serializable]
public class Email
{
[DataMember]
public string From { get; set; }
[DataMember]
public string To { get; set; }
[DataMember]
public string Subject { get; set; }
[DataMember]
public string Body { get; set; }
}
Я отправляю сообщение в очередь следующим образом: v
Email email = new Email
{
From = "email@email.com",
To = "email@email.com",
Subject = "Testing Azure Service Bus Queue",
Body = "The test was a success!"
};
BrokeredMessage message = new BrokeredMessage(email);
Console.WriteLine("Sending message to Azure");
SendToAzure sendClient = new SendToAzure();
try
{
sendClient.Send(message);
}
public class SendToAzure
{
public string ServiceBusConnectString = [Endpoint];
public string QueueName = [Queue];
public async Task Send(BrokeredMessage message)
{
QueueClient AzureClient = QueueClient.CreateFromConnectionString(ServiceBusConnectString, QueueName);
await AzureClient.SendAsync(message);
}
}
Сообщение правильно попадает в очередь.Я могу зайти в свою очередь служебной шины Azure и увидеть, что в очереди находится одно сообщение.
Ниже приведен мой код для получения сообщения и десериализации его в объект электронной почты:
public class ReadFromAzure
{
public string ServiceBusConnectString = [Endpoint];
public string QueueName = [Queue];
public void Receive()
{
QueueClient AzureClient = QueueClient.CreateFromConnectionString(ServiceBusConnectString, QueueName);
while (true)
{
BrokeredMessage message = AzureClient.Receive();
if (message != null)
{
var type = message.GetType();
Email email = message.GetBody<Email>();
}
}
}
}
Когда я вызываю функцию GetBody и пытаюсь десериализовать ее в объект электронной почты, я получаю следующую ошибку:
Ожидается элемент 'Email' из пространства имен 'Email' .. Обнаружен элемент сname 'BrokeredMessage', пространство имен 'http://schemas.microsoft.com/netservices/2011/06/servicebus'.
Кто-нибудь знает, что является причиной этой ошибки?