我无法使用Microsoft.Azure.CosmosDB.Table更新表对象并获得以下异常。 “消息:服务器上不再提供所请求的资源。”代码:走了 我可以毫无问题地运行选择。
使用命名空间Microsoft.WindowsAzure我可以进行查询和更新。 此代码也适用于devdb存储 或者如果我将连接字符串更改为Azure表存储。唯一不起作用的是指向CosmosDb。
`
Microsoft.Azure.Storage;
using Microsoft.Azure.CosmosDB.Table;
namespace AzureTester
{
class Program
{
static void Main(string[] args)
{
//cosmosdb.azure these don't work for TableOperation.InsertOrMerge(x). They do for Selects
var connectionString = "........TableEndpoint=https://*****.table.cosmosdb.azure.com:443/;";
//table storage or dev this works for everything
//var connectionString = ".....EndpointSuffix=core.windows.net";
//var connectionString = "UseDevelopmentStorage=true;";
var storageAccount = CloudStorageAccount.Parse(connectionString);
CloudTableClient tableClient = storageAccount.CreateCloudTableClient();
var table = tableClient.GetTableReference("Boat");
TableQuery<Boat> query = new TableQuery<Boat>()
.Where(TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, "jack"));
var returnedBoat = table.ExecuteQuerySegmentedAsync<Boat>(query, null).Result; //this always works.
Boat x = new Boat();
x.PartitionKey = "jack";
x.RowKey = "black";
x.Type = "dragon";
TableOperation insertOrMergeOperation = TableOperation.InsertOrMerge(x);
//hangs on this line when connection string is cosmosdb.azure.com
TableResult result = table.Execute(insertOrMergeOperation);
Boat inserted = result.Result as Boat;
}
答案 0 :(得分:1)
当Cosmos DB Table API问世时,我认为他们使用了名称空间Microsoft.Azure.Storage,但他们现在使用的是Microsoft.Azure.CosmosDB.Table。此外,从您的代码中,您不清楚是否要访问Cosmos数据库表或Azure存储表。如果要访问Azure存储表,则必须使用WindowsAzure.Storage。*程序集,然后才能访问存储帐户。
如果要访问CosmosDB表中的数据,则必须使用其Table API,并且数据必须位于Cosmos DB数据库中,而不是Azure存储中。有关使用.NET访问Cosmos DB表的示例,请参阅Quickstart: Build a Table API app with .NET and Azure Cosmos DB。
答案 1 :(得分:0)
尝试使用版本8.6.0或Microsoft.Azure.Storage.Common的8.7.0
卸载Microsoft.Azure.CosmosDB.Table.1.1.0。然后卸载Microsoft.Azure.Storage.Common.9.0.0.1-preview。然后安装Microsoft.Azure.Storage.Common.8.6.0-preview或Microsoft.Azure.Storage.Common.8.7.0.1-preview。然后最后安装Microsoft.Azure.CosmosDB.Table.1.1.0。
答案 2 :(得分:0)
失败是由我本地电脑/网络上的某些内容引起的。我怀疑McAfee Endpoint Security与此帖子类似:Azure DocumentDB sporadically throws SocketException / GoneException
相同的代码在家用电脑上运行良好。虽然我没有确定可能是防病毒或防火墙保护的确切错误。
我没有解释为什么McAfee允许Microsoft.WindowsAzure而不是Microsoft.Azure