我用C#开发了一个简单的Azure Webapp。并使用Azure存储帐户表来保存网站的某些记录。
在读取和写入操作上,它在我自己的计算机上运行良好,具有真实的连接字符串。我可以使用“Azure Storage Explorer”找到记录。
然而,在我部署应用程序之后。当我尝试编写表时,云版本不断抛出Http 400错误。但是读取操作仍然可以正常工作。 (本地版本总是正常。)
问题很奇怪。请帮帮我。
感谢。
== UPDATE ==
拯救&查询代码是这样的。
public class CodeSnippet: TableEntity
{
public string Title { get; set; }
public string Author { get; set; }
public string FileType { get; set; }
public string Code { get; set; }
public Guid Save()
{
var guid = Guid.NewGuid();
var datetime = DateTimeOffset.UtcNow;
this.RowKey = guid.ToString();
this.PartitionKey = datetime.ToString();
var json = JsonConvert.SerializeObject(this);
var client = AzureStorage.DefaultClient.Instance.GetTableClient();
var table = client.GetTableReference("privateshare");
var insertOp = TableOperation.Insert(this);
table.Execute(insertOp);
return guid;
}
public static CodeSnippet Query(Guid? guid)
{
if (guid == null)
{
return null;
}
var client = AzureStorage.DefaultClient.Instance.GetTableClient();
var table = client.GetTableReference("privateshare");
var query = new TableQuery<CodeSnippet>()
.Where(TableQuery.GenerateFilterCondition(
"RowKey", QueryComparisons.Equal, guid.ToString()))
.Take(1);
var res = table.ExecuteQuery(query);
return res?.First();
}
}
答案 0 :(得分:1)
问题解决了。
当我将DateTimeOffset.UtcNow.ToString()
作为分区键时发生错误。
将其更改为DateTimeOffset.UtcNow.ToUnixTimeSeconds().ToString()
后,它最终会正常工作。
我不知道&amp;问题发生的原因。但我猜“PartitionKey”中的特殊字符可能是问题的原因。