Почему Azure WebJob JobHost.CallAsync возвращает ошибку - PullRequest
0 голосов
/ 17 апреля 2019

Вот мой код:

JobHost host = new JobHost(config);
host.CallAsync(typeof(Program).GetMethod("Auth")).GetAwaiter().GetResult();

А в WebJob Run Details я вижу эту информацию:

[04/16/2019 23:21:16 > 6b9633: ERR ] 
[04/16/2019 23:21:16 > 6b9633: ERR ] Unhandled Exception: System.ArgumentNullException: Value cannot be null.
[04/16/2019 23:21:16 > 6b9633: ERR ] Parameter name: method
[04/16/2019 23:21:16 > 6b9633: ERR ]    at Microsoft.Azure.WebJobs.JobHost.CallAsync(MethodInfo method, IDictionary`2 arguments, CancellationToken cancellationToken)
[04/16/2019 23:21:16 > 6b9633: ERR ]    at XXX.Program.Main() in C:\XXX\Program.cs:line 286
[04/16/2019 23:21:16 > 6b9633: SYS INFO] Status changed to Failed
[04/16/2019 23:21:16 > 6b9633: SYS ERR ] Job failed due to exit code -532462766

Я думаю, что использую этот метод:

public System.Threading.Tasks.Task CallAsync(System.Reflection.MethodInfo method, [System.Threading.CancellationToken cancellationToken = null])

Член Microsoft.Azure.WebJobs.JobHost

Сводка: вызывает метод задания.

Параметры:

метод: метод задания, который необходимо вызвать.
cancellationToken: токен для отслеживания запросов на отмену.

Возвращает:

System.Threading.Tasks.Task, который будет вызывать метод задания.

Но похоже, что используется какой-то метод переопределения.

Мой вызывающий метод имеет следующую сигнатуру:

private static async Task Auth()

Как правильно вызывать его, избегая ошибок?

1 Ответ

1 голос
/ 17 апреля 2019

GetMethod(string) - получить открытый метод, но вы объявили его как закрытый, поэтому он возвращает ноль. Измените метод на public должен работать.

PS: Вы можете использовать ключевое слово nameof, чтобы избежать использования строкового литерала для определения вашего метода typeof(Program).GetMethod(nameof(Program.Auth))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...