问题
I got this error when I executed the following code:
var insert = new TableBatchOperation();
foreach (var entity in entities)
{
insert.Insert(entity);
}
cloudTable.ExecuteBatch(insert);
Where the entities collection contained 512 elements. The Azure SDK through a StorageException:
"Unexpected response code for operation : 99"
What does this error mean, and how can I solve this?
回答1:
This un-descriptive error means that Azure bulk operations (at least in this case) takes up to 100 elements. Limit your batch and you'll be good.
I ended up using something like this:
public void Insert(IEnumerable<T> entities)
{
foreach (var chunk in entities.Chunk(100))
{
InsertMaxLimitElements(chunk);
}
}
private void InsertMaxLimitElements(IEnumerable<T> chunk)
{
var insert = new TableBatchOperation();
foreach (var entity in chunk)
{
insert.Insert(entity);
}
cloudTable.ExecuteBatch(insert);
}
The Chunk extension method was copied from this answer:
public static IEnumerable<IEnumerable<T>> Chunk<T>(this IEnumerable<T> source, int chunksize)
{
while (source.Any())
{
yield return source.Take(chunksize);
source = source.Skip(chunksize);
}
}
回答2:
If the batch size is < 100, it could also mean that you have duplicate entries (two entries with the same rowkey). This is very likely if it succeeds when you write the entries individually but fails writing in batch.
来源:https://stackoverflow.com/questions/18170920/azure-table-storage-error-unexpected-response-code-for-operation-99