использовать объект JSON с SDK для веб-заданий и очередью Azure - PullRequest
0 голосов
/ 24 мая 2018

Просто создаю пример приложения, чтобы попытаться что-то выяснить.

У меня есть класс с именем 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 \ ": \" path here \ ", \" name \ ": \" name here \ "}"

Iпопытался установить сообщение как тип messageClass или Object вместо строки.

Использование Newtonsoft.Json;

Спасибо,

Джо

1 Ответ

0 голосов
/ 24 мая 2018

У вас нет модификаторов доступа к свойствам path и name, поэтому они по умолчанию являются частными (тогда как без учета модификаторов доступа класс делает их внутренними).Поэтому, пока вы можете видеть значения во время отладки, JsonConvert не может и, следовательно, не может устанавливать значения для этих свойств.

Добавьте модификаторы открытого доступа к свойствам, и вы должны быть хорошими.

public class messageClass
{
    public string name { get; set; }
    public string path { get; set; }
}
...