代码之家  ›  专栏  ›  技术社区  ›  Pure.Krome

Azure存储队列。AddMessageAsync(item,cancellationToken)缺少接受两个参数的方法

  •  0
  • Pure.Krome  · 技术社区  · 6 年前

    我正在尝试执行以下不编译的代码:

    var message = new CloudQueueMessage(item);
    return queue.AddMessageAsync(message, cancellationToken);
    

    编译器说没有只接受2x参数的方法。

    The offical MS documentation 上面说 应该 是一个接受2x参数的方法。

    The official code on GitHub 也表明 应该 是一个接受2x参数的方法。。。

    我在用 Assembly Microsoft.WindowsAzure.Storage, Version=9.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 via NuGet仅列出这3种方法:

    public virtual Task AddMessageAsync(CloudQueueMessage message);
    public virtual Task AddMessageAsync(CloudQueueMessage message, TimeSpan? timeToLive, TimeSpan? initialVisibilityDelay, QueueRequestOptions options, OperationContext operationContext, CancellationToken cancellationToken);
    public virtual Task AddMessageAsync(CloudQueueMessage message, TimeSpan? timeToLive, TimeSpan? initialVisibilityDelay, QueueRequestOptions options, OperationContext operationContext);
    

    有人能解释一下吗:

    1. 文件过期了吗?
    2. 文档是好的,但适用于较新版本的Azure Storage NuGet包?
    3. 如果它不在v 9.3nuget包中,那么我应该如何正确地传递 CancellationToken 对方法?通过 null 对于 每个 争论?

    这是一个.NET核心项目。

    1 回复  |  直到 5 年前
        1
  •  2
  •   Jerry Liu Phantom    6 年前

    .NET Framework和.NET Core的存储SDK有一些细微的差异,这些在文档中没有说明。

    从v9.2.0开始, AddMessageAsync(CloudQueueMessage message, CancellationToken cancellationToken) 方法已在.NET Core SDK中删除。所以一个解决方法是将sdk降级到v9.1.1。

    好消息是,这些差异将在下一版本的Azure存储包中消除。见相关 issue comment .

    此库设置为目标.NET Standard 2.0,不包含这些细微的API差异。

    所以另一个解决办法是 preview version 在它变得普遍可用之前。

    请注意,命名空间在预览版本中已更改。

    using Microsoft.Azure.Storage; 
    using Microsoft.Azure.Storage.Queue;