无法保存到Azure表

时间:2012-06-04 16:17:37

标签: asp.net-mvc-4 azure-table-storage

当我尝试将实体保存到azure表时,我得到DataServiceRequestException异常。它出现在这一行_myContext.SaveChangesWithRetries();我试图谷歌看看问题可能是什么。但找不到任何答案。

有人知道问题是什么吗?

存储创建者

public CloudTableClient GetMusicClient() {
      //retrieve connection string from settings
      CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
          RoleEnvironment.GetConfigurationSettingValue("StorageConnectionString"));

      //create table client
      CloudTableClient tableClient = storageAccount.CreateCloudTableClient();

      //create table if doesn't exist
      string tableName = "music";
      tableClient.CreateTableIfNotExist(tableName);

      return tableClient;
}

的WebAPI

public Music PostMusic(string genre, string artist, string random)
{
    CloudTableClient _myTableClient = _myTableRepo.GetMusicClient();
    TableServiceContext _myContext =  _myTableClient.GetDataServiceContext();

    Music music = new Music(genre, artist);
    music.Score = "10";
    music.Year = "2012";
    music.Random = random;
    try
    {
        _myContext.AddObject(random, music);
        _myContext.SaveChangesWithRetries();
    }
    catch (StorageClientException e)
    { }
    catch (DataServiceRequestException e)
    {
        System.Diagnostics.Debug.WriteLine(e.StackTrace);
    }

    return music;

}

栈跟踪

An error occurred while processing this request.
   at Microsoft.WindowsAzure.StorageClient.Tasks.Task`1.get_Result()
   at Microsoft.WindowsAzure.StorageClient.Tasks.Task`1.ExecuteAndWait()
   at MyWebAPI.Controllers.ValuesController.PostMusic(String genre, String artist, String random) in C:\MyWebAPI\MyWebAPI\Controllers\ValuesController.cs:line 61

Music.cs

public class Music : TableServiceEntity
    {
        public Music(string genre, string artist)
        {
            this.PartitionKey = genre;
            this.RowKey = artist;
        }
        public Music() {}
        public string Score { get; set; }
        public string Year { get; set; }
        public string Random { get; set; }
    }

1 个答案:

答案 0 :(得分:1)

哦,看起来你的AddObject的第一个参数是错的?它应该是“music”,即表的名称,但如果要相信参数名称,则看起来像是在传递一个随机字符串。