我最近一直在使用Azure存储资源,尤其是我只是在玩Table中的CRUD操作。我可以使用.NET Framework完成任务,但是最近,我的要求发生了变化,不得不迁移到.NET Core。我编写了相同类型的代码,因为它到达了try-catch
中的CreateTable()
语句,并且无故停止,我没有收到任何异常或消息,程序只是从那里退出。我一直在尝试找出这个问题,到目前为止,我来到了以下解决方案,该解决方案似乎缺少使它起作用的微小部件。
此外,以前我使用CosmosDB API来执行此操作。不幸的是,它在.NET Core中不可用,因此我想出了这个解决方案。
我的想法:我也担心身份验证部分,因为我无法确定它是否成功。它顺利通过Auth()
,没有问题。如果有人能给我正确的方向解决这个问题,我将不胜感激。谢谢!
static CloudStorageAccount _storageAccount;
static void Main(string[] args)
{
Auth();
CreateTable();
}
static void Auth()
{
_storageAccount = new CloudStorageAccount(
new Microsoft.WindowsAzure.Storage.Auth.StorageCredentials(
"MyResource", "MyKey"),true);
}
async static void CreateTable()
{
CloudTableClient tableClient = _storageAccount.CreateCloudTableClient();
CloudTable peopleTable = tableClient.GetTableReference("XYZ");
try
{
await peopleTable.CreateIfNotExistsAsync();
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
}
People customer = new People("Garry", "Johnson");
customer.Email = "xxx@yyy.zzz";
customer.PhoneNumber = "123456789";
TableOperation insertOperation = TableOperation.Insert(customer);
var result = await peopleTable.ExecuteAsync(insertOperation);
}
}
答案 0 :(得分:1)
我编写了相同类型的代码,因为它到达了CreateTable()中的try-catch语句并无故停止。
由于CreateTable()是一个异步方法,因此程序将立即退出,而无需等待获取执行结果。
如果有人能给我正确的方向来解决这个问题,我将不胜感激
请尝试使用以下演示代码。如果在控制台中获得204的含义即成功创建表并将记录插入到表中,否则您将在控制台中获得异常信息。
for (var i = 0; i < input.files.length; i++) {
var file = this.files[i];
var fd = new FormData();
fd.append("th_photo", file);
console.log("========= START ==========");
var loaderName = 'loader_n' + i + '"';
console.log("-> " + loaderName);
var loader = '<div id="' + loaderName + ' class="content-loader">'+
'<svg class="loader-circular" viewBox="25 25 50 50">'+
'<circle class="loader-path" cx="50" cy="50" r="20" fill="none" stroke-width="2" stroke-miterlimit="10"/>'+
'</svg>'+
'</div>';
console.log("-> " + loader);
$.ajax({
type: 'POST',
dataType: 'json',
cache: false,
processData: false,
contentType: false,
url: '../assets/_php/actions.php',
data: fd,
beforeSend:function(data){
$('.up_preview').append(
'<div class="uploaded_photo_loader" id="tmp_'+i+'">'
+loader+'</div>');
},
success:function(data){
$('.up_preview').append(
'<div class="uploaded_photo_grid">'+
'<img class="previewItem" src="'+data.fcontent+'">'+
'</img></div>');
var newName = '"#' + loaderName; //Get the div ID and using it on jQuery
console.log("-> " + newName);
$(newName).hide();
}
});
}
}