从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()操作会抛出这么个异常。
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 官网欢迎您的访问