Пакет SDK 0.3 WebJobs нарушил мои привязки параметров

#azure-storage #azure-webjobs

#azure-хранилище #azure-webjobs

Вопрос:

У меня есть следующее определение метода:

 public static void ProcessPackageRequestMessage(
    [QueueTrigger(queues.PACKAGE)] PackageRequestMessage message, 
    [Blob(blobs.PACKAGE   "/{RequestId}_{BlobFile}")] ICloudBlob blob,
    [Table(tables.PACKAGE)] CloudTable table,
    [Queue(queues.EMAIL)] out PackageEmailMessage packageEmailMessage)
 

Класс PackageRequestMessage определяется следующим образом:

 public class PackageRequestMessage
{
    public Guid RequestId { get; set; }
    public Guid FactoryId { get; set; }
    public string BlobFile { get; set; }
    public string SKU { get; set; }
    public string EmailAddress { get; set; }
}
 

В версии 0.2 SDK, когда сообщение PackageRequestMessage в формате JSON было отправлено в очередь, был вызван этот метод, и был найден соответствующий большой двоичный объект на основе параметров в PackageRequestMessage (RequestID и BlobFile), и все работало хорошо.

Теперь, в версии 0.3 SDK, я получаю следующую ошибку:

Система.Исключение InvalidOperationException: System.Исключение InvalidOperationException: параметр привязки исключения ‘blob’ —> System.Исключение InvalidOperationException: нет значения для параметра name ‘RequestID’ в Microsoft.Azure.Jobs .RouteParser.ApplyNamesWorker(String pattern, IDictionary 2 names, Boolean allowUnbound)
at Microsoft.Azure.Jobs.RouteParser.ApplyBindingData(String pattern, IReadOnlyDictionary
2 bindingData) в Microsoft.Azure.Jobs.Host.Blobs.Привязки.Привязка больших двоичных объектов.Привязка (контекст BindingContext) в Microsoft.Azure.Jobs.Host.Runners.TriggerParametersProvider 1.Bind()
--- End of inner exception stack trace ---
at Microsoft.Azure.Jobs.Host.Runners.DelayedException.Throw()
at Microsoft.Azure.Jobs.Host.Runners.WebSitesExecuteFunction.ExecuteWithSelfWatch(MethodInfo method, ParameterInfo[] parameterInfos, IReadOnlyDictionary
2 parameters, TextWriter consoleOutput) в Microsoft.Azure.Jobs.Host.Runners.WebSitesExecuteFunction.Выполняйте без выходных журналов (запрос FunctionInvokeRequest, IReadOnlyDictionary 2 parameters, TextWriter consoleOutput, CloudBlobDescriptor parameterLogger, IDictionary 2 parameterLogCollector) в Microsoft.Azure.Jobs.Host.Runners.WebSitesExecuteFunction.Выполните withlogmessage(запрос FunctionInvokeRequest, контекст RuntimeBindingProviderContext, сообщение FunctionStartedMessage, идентификатор `2 parameterLogCollector) в Microsoft.Azure.Jobs.Host.Runners.WebSitesExecuteFunction.Выполнить (запрос FunctionInvokeRequest, контекст RuntimeBindingProviderContext)

На панели мониторинга само сообщение отображается с действительным идентификатором запроса, присутствующим в JSON, поэтому я не уверен, почему оно пропало без вести.

Ответ №1:

pianomanjh, я смог воспроизвести проблему, которую вы описываете, и я отправил ошибку. Похоже, что этот сбой возникает только в шаблоне имен больших двоичных объектов, привязка параметров не затрагивается.

На данный момент обходным путем является использование string вместо Guid для типов свойств.

Комментарии:

1. спасибо, с нетерпением жду возможности получить правильный синтаксический анализ Guid.

Ответ №2:

Только что найдено решение проблемы с большими двоичными объектами i 0.3.0. По сравнению с версией 0.2.0, вы должны определить большой двоичный объект для FileAccess.Напишите, чтобы заставить его работать. Он исправил проблему, которую я описал выше, чтобы иметь возможность передавать поток в большой двоичный объект