相关疑难解决方法(0)

如何编码Azure存储表行键和分区键?

我正在使用Azure存储表,我有数据进入RowKey,其中包含斜杠.根据此MSDN页面,PartitionKey和RowKey中不允许使用以下字符:

  • 正斜杠(/)字符

  • 反斜杠()字符

  • 数字符号(#)字符

  • 问号(?)字符

  • 控制字符从U + 0000到U + 001F,包括:

  • 水平制表符(\ t)字符

  • 换行符(\n)字符

  • 回车(\ r)字符

  • 控制字符从U + 007F到U + 009F

我见过有些人使用URL编码来解决这个问题.不幸的是,这可能会产生一些问题,例如能够插入但无法删除某些实体.我也看到有些人使用base64编码,但是这也可以包含不允许的字符.

如何在不运行不允许的字符或滚动自己的编码的情况下有效编码RowKey?

.net c# encoding azure azure-storage

13
推荐指数
2
解决办法
4944
查看次数

执行Azure表存储批量删除时,"意外的操作响应代码:0"

我正在使用适用于.NET的Windows Azure存储库4.3.0版.在我的ATS存储库类中,我有几个批处理删除方法,如下所示:

public async Task DeleteAsync(IEnumerable<T> entities)
{
    await ExecuteAsBatch(entities, (batch, entity) => batch.Delete(entity));
}

private async Task ExecuteAsBatch(IEnumerable<T> entities, Action<TableBatchOperation, T> batchAction)
{
    var byPartition = entities.GroupBy(x => x.PartitionKey).ToList();

    await byPartition.ForEachParallel(async group =>
    {
        // A maximum of 100 actions are allowed per batch job
        var segments = group.ToList().ToSegmentedList(100);
        await segments.ForEachParallel(async segment =>
        {
            var batch = new TableBatchOperation();
            foreach (var entity in segment)
            {
                batchAction(batch, entity);
            }
            await Table.ExecuteBatchAsync(batch);
        }, 10);
    }, 10);
}
Run Code Online (Sandbox Code Playgroud)

在我的代码的其他地方,该DeleteAsync()方法正常工作.但是,在一个特定的地方,我在执行批处理时收到此错误消息:

Unexpected …
Run Code Online (Sandbox Code Playgroud)

c# azure-storage

7
推荐指数
1
解决办法
7186
查看次数

标签 统计

azure-storage ×2

c# ×2

.net ×1

azure ×1

encoding ×1