當我嘗試在Azure表存儲上更新或創建實體時,它有時會拋出一個錯誤,如「實體已存在」或「請求輸入超出範圍「,然後如果我嘗試創建或更新該表上的某個其他實體,它也繼續拋出相同的錯誤。輸入沒有問題,就好像我重新啓動iis服務器一樣,它再次開始工作。我不知道爲什麼會發生這種情況。如果遇到一個錯誤,Azure表存儲服務上下文將繼續拋出相同的錯誤
我嘗試了不同的SaveChangesOptions,包括「ContinueOnError」,但表服務上下文在遇到一個錯誤後繼續在所有進一步更新/創建時拋出錯誤。
以下是我如何創建表存儲服務上下文的代碼。
請讓我知道問題可能是什麼,這對我來說是一個巨大的障礙,因爲如果表服務上下文遇到一個錯誤,我的應用程序中的主要功能會停止工作。
public class AudioRecordRepository : Repository<PersistedAudioRecord>, IAudioRecordRepository
{
private TableStorageServiceContext<PersistedAudioRecord> audioRecordServiceContext;
private CloudStorageAccount cloudStorageAccount;
public AudioRecordRepository(IServiceContext<PersistedAudioRecord> serviceContext)
: base(serviceContext)
{
if (RoleEnvironment.IsAvailable)
cloudStorageAccount = CloudStorageAccount.Parse(RoleEnvironment.GetConfigurationSettingValue("StorageConnectionString"));
else
cloudStorageAccount = CloudStorageAccount.Parse(ConfigurationManager.AppSettings["StorageConnectionString"]);
audioRecordServiceContext = new TableStorageServiceContext<PersistedAudioRecord>(TableNames.AudioRecord, cloudStorageAccount.TableEndpoint.ToString(), cloudStorageAccount.Credentials) { IgnoreResourceNotFoundException = true };
}
public bool CreateRecord(PersistedAudioRecord record)
{
this.audioRecordServiceContext.Create(record);
this.audioRecordServiceContext.SaveChangesWithRetries(SaveChangesOptions.ContinueOnError);
return true;
}
}
您是否考慮遷移到新版本的.Net Azure SDK。其更新的訪問服務方式簡單直觀。這裏是你想要遷移的鏈接http://go.microsoft.com/fwlink/?linkid=254364&clcid=0x409 –