まぼろしハッキング

吹けば飛ぶようなネタを徒然と…

Azure Table Storageバッチ保存時に「Element 0 in the batch returned an unexpected response code.」という例外が発生する

現象

Azure Table StorageでExecuteBatchAsyncメソッドを使用してバッチ保存時に以下の例外が発生する。

Element 0 in the batch returned an unexpected response code.

原因

上記エラーが発生する原因は様々あるようですが、私の場合はEntityのDateTime型プロパティに範囲外の値が入っていました。

ちなみに、DateTime型プロパティにDateTime.MinValue(0001/01/01 00:00:00)を格納してしまっていました。

下記マイクロソフトのサイトにあるように、Table StorageのDateTime型プロパティの最小値は「1601年1月1日 UTC 00:00」となっています。

世界協定時刻 (UTC) を表す 64 ビット値。 サポートされる DateTime 範囲は、世界協定時刻の西暦 1601 年 1 月 1 日深夜 12:00 に始まり、 この範囲は 9999 年 12 月 31 日に終了します。

learn.microsoft.com

 

ExceptionのRequestInformation内のHttpStatusMessageにちゃんと原因が書いてありました。

解決方法

DateTime型プロパティには1600年1月1日 00:00:00~9999年12月31日 23:59:59をセットする。

もしDateTime型プロパティが原因で無い場合は、他の型のプロパティ値が適切かどうか確認すると良いかもしれません。