2017-06-16 49 views
2

我創建與服務總線觸發了Azure的功能,並試圖進入的消息綁定到自定義類礦井時系列化例外:Azure的功能服務總線觸發:讓試圖綁定到自定義類

public class InputMessage 
{ 
    public string EntityId { get; set; } 
} 

public static string Run(InputMessage message, TraceWriter log) 
{ 
    log.Info($"C# ServiceBus trigger function processed message: {message}"); 
} 

我的消息是JSON,例如

{ "EntityId": "1234" } 

不幸的是,結合失敗在運行時用下面的消息:

異常而執行功能:Functions.ServiceBusTriggerCSharp1。 Microsoft.Azure.WebJobs.Host:發生一個或多個錯誤。異常 綁定參數'消息'。 System.Runtime.Serialization:從命名空間 'http://schemas.datacontract.org/2004/07/' 期待 元素 'Submission_x0023_0.InputMessage' ..遇到 '元素' 名爲 '串',命名空間 'http://schemas.microsoft.com/2003/10/Serialization/'。 。

看起來運行時試圖用DataContractSerializer反序列化消息。如何將反序列化切換爲JSON?

回答

4

BrokeredMessage來函數必須有ContentType屬性明確設置爲application/json。如果沒有指定,則假定默認爲DataContractSerializer。那麼,這樣做的時候發送消息:

var message = new BrokeredMessage(body) 
{ 
    ContentType = "application/json" 
}; 

詳見ServiceBus Serialization Scenarios