1

我有以下方法定义:

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; }
}

在 SDK 0.2 版本中,当 PackageRequestMessage 的 JSON 消息发布到队列时,会调用该方法,并根据 PackageRequestMessage 中的参数(RequestId 和 BlobFile)找到合适的 Blob,并且一切正常。

现在,在 SDK 的 0.3 版中,我收到以下错误:

2 names, Boolean allowUnbound) at Microsoft.Azure.Jobs.RouteParser.ApplyBindingData(String pattern, IReadOnlyDictionarySystem.InvalidOperationException:System.InvalidOperationException:异常绑定参数“blob”---> System.InvalidOperationException:Microsoft.Azure.Jobs.RouteParser.ApplyNamesWorker(字符串模式,IDictionary 2 bindingData)的名称参数“RequestId”没有值.Azure.Jobs.Host.Blobs.Bindings.BlobBinding.Bind(BindingContext context) 在 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, IReadOnlyDictionary2 个参数,TextWriter consoleOutput) 在 Microsoft.Azure.Jobs.Host.Runners.WebSitesExecuteFunction.ExecuteWithOutputLogs (FunctionInvokeRequest 请求,IReadOnlyDictionary2 parameters, TextWriter consoleOutput, CloudBlobDescriptor parameterLogger, IDictionary2 parameterLogCollector) 在 Microsoft.Azure.Jobs.Host.Runners.WebSitesExecuteFunction.ExecuteWithLogMessage(FunctionInvokeRequest request, RuntimeBindingProviderContext context, FunctionStartedMessage message, IDictionary`2 parameterLogCollector) 在 Microsoft.Azure.Jobs.Host.Runners.WebSitesExecuteFunction.Execute(FunctionInvokeRequest request, RuntimeBindingProviderContext 上下文)

在仪表板中,消息本身显示在 JSON 中存在有效的 RequestId,因此我不确定为什么报告它丢失。

4

2 回答 2

0

pianomanjh,我能够重现您所描述的问题,并提交了一个错误。似乎这种故障只发生在 blob 名称模式中,参数绑定不受影响。

现在的解决方法是使用string而不是Guid属性类型。

于 2014-06-27T18:39:13.797 回答
0

刚刚找到了 blob 问题的解决方案 i 0.3.0。与 0.2.0 版相比,您必须将 Blob 定义为 FileAccess.Write 才能使其工作。它解决了我上面描述的问题,以便能够流式传输到 blob

于 2014-07-02T09:04:04.980 回答