- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
尝试提交消息正文中包含对象的队列消息,但在 BrokeredMessage 的下一行收到异常
QueueClient queueClient = QueueClient.CreateFromConnectionString(_connectionString, _queuePathName);
var data = new ABSurvey
{
name = "somename",
version = 1,
language = "eng",
SelfSurvey = new Survey()
{
SurveyItems = new List<ISurveyItem>() { new SurveyItem(){IsSelected = true, ItemId = 1}},
SurveyPerception = Constants.Perception.Self
},
SelfConcept = new Survey()
{
SurveyItems = new List<ISurveyItem>() { new SurveyItem(){IsSelected = true, ItemId = 1}},
SurveyPerception = Constants.Perception.SelfConcept
}
};
BrokeredMessage message = new BrokeredMessage(data);
queueClient.Send(message);
异常消息 - 键入“.Survey”,数据协定名称为“Survey:http://schemas.datacontract.org/2004/07/namespace” ' 不是预期的。考虑使用 DataContractResolver 或将任何静态未知的类型添加到已知类型列表中 - 例如,通过使用 KnownTypeAttribute 属性或将它们添加到传递给 DataContractSerializer 的已知类型列表中。
这些是我拥有的模型 -
[DataContract]
public class ABSurvey
{
[DataMember] public string name;
[DataMember] public int version;
[DataMember] public string language;
[DataMember] public ISurvey SelfSurvey;
[DataMember] public ISurvey SelfConcept;
}
[DataContract]
public class SurveyItem : ISurveyItem
{
[DataMember]
public int ItemId { get; set; }
[DataMember]
public bool IsSelected { get; set; }
public SurveyItem()
{
ItemId = -1;
IsSelected = false;
}
}
[DataContract]
public class Survey : ISurvey
{
[DataMember]
public IList<ISurveyItem> SurveyItems { get; set; }
[DataMember]
public Constants.Perception SurveyPerception { get; set; }
public Survey()
{
SurveyItems = new List<ISurveyItem>();
}
}
public interface ISurvey
{
[DataMember]
IList<ISurveyItem> SurveyItems { get; set; }
[DataMember]
Constants.Perception SurveyPerception { get; set; }
}
public interface ISurveyItem
{
[DataMember]
int ItemId { get; set; }
[DataMember]
bool IsSelected { get; set; }
}
请帮忙定位问题。
最佳答案
您的数据协定中缺少 [KnownType]
属性,这就是您的消息无法序列化的原因。详细解释可参见hehe .
只需添加 [KnownType] 属性即可告诉序列化器可以使用哪种具体实现:
[KnownType(typeof(Survey))]
[DataContract]
public class ABSurvey
{
[DataMember]
public string name;
[DataMember]
public int version;
[DataMember]
public string language;
[DataMember]
public ISurvey SelfSurvey;
[DataMember]
public ISurvey SelfConcept;
}
[KnownType(typeof(SurveyItem))]
[DataContract]
public class Survey : ISurvey
{
[DataMember]
public IList<ISurveyItem> SurveyItems { get; set; }
public Survey()
{
SurveyItems = new List<ISurveyItem>();
}
}
关于Azure 服务总线队列 - 使用 BrokeredMessage 进行序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26792345/
这与 this other question 直接相关。在使用 BrokeredMessage 的 .NET Framework 客户端传入和传出对象时,这些 BrokeredMessage 不仅仅使
这可能是 this question 的重复项但这与批处理数据库更新的讨论相混淆,并且仍然没有正确的答案。 在使用 Azure 服务总线队列的简单示例中,我无法在将 BrokeredMessage 放
我正在尝试使用服务总线Azure功能,在其中我接受BrokeredMessage,然后执行http请求,然后决定是完成、放弃还是死信消息。但我发现如果我等待 http 请求,BrokeredMessa
在没有任何自定义 DataContractSerializer[作为默认 XML 序列化程序发生] 的情况下通过 ServiceBus 传递代理消息。 var message = new Broker
我无法将我的 BrokeredMessage 标记为 Complete。 按预期工作的简单代码: private void OnMessageArrived(BrokeredMessage mess
我的 Azure 服务总线间歇性出现问题。有时,在总线上放置消息会导致以下异常: 类型:InvalidOperationException 消息:无法执行该操作,因为代理消息“723eab13dab3
我知道错误消息是不言自明的,我们无法多次读取消息正文。这里我使用AOP(面向方面编程)来进行审计日志。 [AuditServiceMethod(AttributePriority = 0)] [F
尝试提交消息正文中包含对象的队列消息,但在 BrokeredMessage 的下一行收到异常 QueueClient queueClient = QueueClient.CreateFromConne
我有一个计时器触发函数,它将对象发送到服务总线主题,如下所示 [FunctionName("ProcessTermedEmployee")] public static
尝试提交消息正文中包含对象的队列消息,但在 BrokeredMessage 的下一行收到异常 QueueClient queueClient = QueueClient.CreateFromConne
我有一个计时器触发函数,它将对象发送到服务总线主题,如下所示 [FunctionName("ProcessTermedEmployee")] public static
我曾经使用 RabbitMQ 作为消息传递平台,但从未遇到过任何问题 - 不幸的是,我们最近将基础架构移至 Azure,但他们不提供 RabbitMQ 服务器,因此我考虑尝试一下服务总线扩展名。 我有
我正在尝试将来自 Azure 服务总线的项目排队,以便可以批量处理它们。我知道 Azure 服务总线有一个 ReceiveBatch() 但它似乎有问题,原因如下: 我一次最多只能获取 256 条消息
我有一个 javascript 日志实用程序,它可以将请求批量发送到我的服务器,然后将它们转发到队列客户端 (Microsoft.ServiceBus.Messaging.QueueClient)。我
我们正在将应用程序从使用 MSMQ 转换为使用 Azure 服务总线。我们有一个对象(消息,类型),如下所示: [Serializable] public class LeadSubmissionMe
C# .NET Core Azure Functions v2; Microsoft.Azure.ServiceBus 3.2.0、Microsoft.Azure.WebJobs 3.0.2、Micr
我们对 Azure 服务总线客户端有以下包装: public virtual void SendMessage(object bodyObject) { var brokeredMessage
我有一个 BrokeredMessageContext 类,它使用 Timer 定期检查和更新 BrokeredMessage 实例上的锁,以防处理此消息的进程运行时间超过预期。它通过调用 Broke
当您在 Azure 服务总线中使用中转消息时,可以通过调用 .GetBody 检索消息正文。代码很简单: var msg = subscription.Receive(); MyPayload pay
我选择流分析作业内的数据并将其发送到 ServiceBus 输出。 是否可以为生成的 BrokeredMessage 设置 ContentType 或 Label 等属性? 最佳答案 目前这些属性不可
我是一名优秀的程序员,十分优秀!