404在Azure中删除表行时出错
本文关键字:出错 删除 Azure | 更新日期: 2023-09-27 18:24:58
在VS2013的云服务项目中运行此代码时,出现404错误。
当我从表中检索不存在的行时,我怎么可能删除它?
var routeResultQuery = new TableQuery<RouteResult>(); // I deleted where caluse for brevity
var results = resultTable.ExecuteQuery<RouteResult>(routeResultQuery).ToList();
if (results.Count() > 0) // The count shows 26 element when debugging
{
foreach(RouteResult rr in results)
{
var op = TableOperation.Delete(rr);
resultTable.Execute(op); // The error happens here
}
}
事实证明,我对表的设计很糟糕,以至于在用检索方法构造RowKey时会被重写两次。
public class RouteResult : TableEntity
{
public string Session
{
get
{
return PartitionKey;
}
set
{
RowKey = value + "-" + DateTime.UtcNow.Ticks; // The issue is here
PartitionKey = value;
}
}
}
问题不在于重写操作,而在于导致不同RowKey的变量值DateTime.UtcNow.Ticks
,因此找不到404。
我把表格改成:
public class RouteResult : TableEntity
{
public RouteResult(string sessionId)
{
RowKey = sessionId + "-" + Guid.NewGuid();
PartitionKey = sessionId;
}
public RouteResult()
{
}
}
现在一切都好了。