Our company uses Queue Explorer 4.0 pro by cogin and I've been searching all over their website and the only thing I can find on using their .net view is this little blurp about viewing a message being parsed with a .net assembly: blog post
so for instance, the body of my message is this:
<?xml version="1.0"?>
<CreateAuditLogEntry xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://tempuri.net/Phone.Messages">
<SurveyId>12345</SurveyId>
<AuditEventId>704</AuditEventId>
<EventDateTime>2018-06-08T13:21:07.6647304Z</EventDateTime>
</CreateAuditLogEntry>
and I've tried using the assembly that we tell NServicebus to use that sends said message.It didn't have the SerializableAttribute
so I figured I'd just make my own assembly with the same namespace and try to add all the same things:
namespace Phone.Messages
{
[System.Serializable]
public class CreateAuditLogEntry
{
public long SurveyId { get; set; }
public int AuditEventId { get; set; }
public System.DateTime EventDateTime { get; set; }
}
}
I compile that and point Queue Explorer to it and it tells me that it still can't deserialize the object: Error: Cannot deserialize the message passed as an argument. Cannot recognize the serialization format.
Has anyone used this and made it work successfully?
That xmlns part seems to be the problem here. Your sample works when that namespace is specified through XmlRoot attribute:
[XmlRoot(Namespace="http://tempuri.net/Phone.Messages")]
public class CreateAuditLogEntry
{
public long SurveyId { get; set; }
public int AuditEventId { get; set; }
public System.DateTime EventDateTime { get; set; }
}
Btw. QueueExplorer dynamically loads assemblies specified for .Net views, you don't have to restart it if you rebuild and create new dll/exe.