[英]use a JSON object with a webjobs SDK and Azure queue
只需構建一個示例應用程序即可嘗試解決問題。
我有一個名為messageClass的類:
namespace WebJobsSDKSample
{
public class messageClass
{
string name { get; set; }
string path { get; set; }
}
}
和一個功能:
namespace WebJobsSDKSample
{
public class Functions
{
public static void ProcessQueueMessage([QueueTrigger("queue")] string message)
{
messageClass mess = JsonConvert.DeserializeObject<messageClass>(message);
}
}
}
該程序設置如下:
namespace WebJobSDK
{
class Program
{
static void Main(string[] args)
{
var config = new JobHostConfiguration();
config.UseDevelopmentSettings();
if (config.IsDevelopment)
{
}
config.DashboardConnectionString = "";
var loggerFactory = new LoggerFactory();
config.LoggerFactory = loggerFactory
.AddConsole();
var host = new JobHost(config);
host.RunAndBlock();
}
}
}
現在,當我運行它時,它可以工作,並且如果將消息放入隊列中,它將被拾起。 但是它並未被視為JSON對象。 如果我將此作為消息輸入:
{“路徑”:“此處的路徑”,“名稱”:“此處的名稱”}
那么path和name的兩個字段都為空。 這是字符串消息在調試器中的函數中顯示的內容:“ {\\” path \\“:\\” path here \\“,\\” name \\“:\\” name here \\“}”
我嘗試將message設置為messageClass或Object的類型,而不是字符串。
使用Newtonsoft.Json;
謝謝,
喬
您在path
和name
屬性上沒有任何訪問修飾符,因此默認情況下它們是私有的(而忽略類的訪問修飾符會使它成為內部的)。 因此,盡管您可以在調試時看到這些值,但JsonConvert
無法並且因此無法在這些屬性上設置值。
在屬性中添加公共訪問修飾符,您應該會很好。
public class messageClass
{
public string name { get; set; }
public string path { get; set; }
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.