2 u012789878 u012789878 于 2015.10.15 18:15 提问

从azure storage上取出的数据如果数据记录为0时进行ToList()时出错。

从azure storage上取出的数据如果数据记录为0时进行ToList()时出错。
public IEnumerable RetrieveTableEntitiesInCondition(string tableName, string conditions) where TEntity : ITableEntity, new()
{
IEnumerable entities = null;
try
{
CloudTable table = tableClient.GetTableReference(tableName);
TableQuery query = new TableQuery().Where(conditions);
entities = table.ExecuteQuery(query);
}
catch (Exception ex)
{
logger.Warn("Retrieve condition entity failed: {0}.", ex.ToString());
}
return entities;
}
当该数据记录为0时对该结果进行ToList()操作时抛出异常,异常为:The remote server returned an error: (404) Not Found. Microsoft.WindowsAzure.Storage.StorageException: The remote server returned an error: (404) Not Found. ---> System.Net.WebException: The remote server returned an error: (404) Not Found.
at System.Net.HttpWebRequest.GetResponse()
求大神帮忙解答为什么ToList()操作会抛出这么个异常。

1个回答

JamborYaoMSFT
JamborYaoMSFT   Rxr 2015.10.16 10:58
已采纳

Hi,

据我测试在特定的condition下返回数据为0时我们依然可以使用ToList(),并不会报错,下面是我尝试的代码,稍有改动。

  public IEnumerable<TEntity> RetrieveTableEntitiesInCondition<TEntity>(string tableName, string conditions ) where TEntity : TableEntity, new()
        {
            CloudStorageAccount storageAccount = CloudStorageAccount.Parse(this._stroageConnectionCN);
            var tableClient = storageAccount.CreateCloudTableClient();
            IEnumerable<TEntity> entities = null;
            try
            {
                CloudTable table = tableClient.GetTableReference(tableName);
                TableQuery<TEntity> query = new TableQuery<TEntity>().Where(conditions);
                entities = table.ExecuteQuery(query);                
            }
            catch (Exception ex)
            {
               // logger.Warn("Retrieve condition entity failed: {0}.", ex.ToString());
            }

            return entities;
        }

图片说明
上面图片也可以看出在没有结果的情况下list得到了一个Count为0的集合,从你的错误的详细情况(remote server returned an error: (404) Not Found. )来看,这个问题的原因可能是由于一些其他问题造成的,我建议你首先检查下你的网络环境,然后再次核对下storage connection是否被串改。

Best Regards,
Jambor
如果您想进一步了解Windows Azure, Windows Azure 官网欢迎您的访问

u012789878
u012789878 谢谢你,问题已经解决了,原因是要找的表不存在,但是确实是在对entities进行操作时抛的错。
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片