gpt4 book ai didi

c# - 在 Azure 表中创建表无一异常(exception)地失败

转载 作者:行者123 更新时间:2023-11-30 23:12:34 26 4
gpt4 key购买 nike

我正在尝试使用示例 https://github.com/Azure-Samples/storage-table-dotnet-getting-started 在 Windows Azure 表服务中创建一个表

运行此示例时,我没有遇到任何问题:表会自行创建,插入和删除工作正常。

但是我作为代码复制到我的项目中的内容似乎无法正常工作。表创建显然失败但不返回任何异常。这就像我的代码不等待表创建完成。

谁能理解为什么?

感谢您的帮助!

下面是我调用代码的方式:

public async void saveInAzureTable()
{
AzureStorage azure = new AzureStorage();
CloudTable table = await AzureStorage.CreateTableAsync("randomtable123");
}

这是 AzureStorage 类:

    using System;
using System.Threading.Tasks;
using Microsoft.Azure;
using Microsoft.WindowsAzure.Storage;
using Microsoft.Wi`enter code here`ndowsAzure.Storage.Table;
using Scraper.Models;

namespace Scraper
{
public class AzureStorage
{
public async Task<TableResult> storeAdvertisementInAzure(CloudTable table, AdvertisementEntity entity)
{
TableOperation insertOrMergeOperation = TableOperation.InsertOrMerge(entity);
TableResult result = await table.ExecuteAsync(insertOrMergeOperation);
return result;
}

/// <summary>
/// Validate the connection string information in app.config and throws an exception if it looks like
/// the user hasn't updated this to valid values.
/// </summary>
/// <param name="storageConnectionString">Connection string for the storage service or the emulator</param>
/// <returns>CloudStorageAccount object</returns>
public static CloudStorageAccount CreateStorageAccountFromConnectionString(string storageConnectionString)
{
CloudStorageAccount storageAccount;
try
{
storageAccount = CloudStorageAccount.Parse(storageConnectionString);
}
catch (FormatException)
{
Console.WriteLine("Invalid storage account information provided. Please confirm the AccountName and AccountKey are valid in the app.config file - then restart the application.");
throw;
}
catch (ArgumentException)
{
Console.WriteLine("Invalid storage account information provided. Please confirm the AccountName and AccountKey are valid in the app.config file - then restart the sample.");
Console.ReadLine();
throw;
}

return storageAccount;
}


/// <summary>
/// Create a table for the sample application to process messages in.
/// </summary>
/// <returns>A CloudTable object</returns>
public static async Task<CloudTable> CreateTableAsync(string tableName)
{
// Retrieve storage account information from connection string.
CloudStorageAccount storageAccount = CreateStorageAccountFromConnectionString(CloudConfigurationManager.GetSetting("StorageConnectionString"));

// Create a table client for interacting with the table service
CloudTableClient tableClient = storageAccount.CreateCloudTableClient();

Console.WriteLine("Create a Table to store data from the scraper");

// Create a table client for interacting with the table service
CloudTable table = tableClient.GetTableReference(tableName);
try
{
if (await table.CreateIfNotExistsAsync())
{
Console.WriteLine("Created Table named: {0}", tableName);
}
else
{
Console.WriteLine("Table {0} already exists", tableName);
}
}
catch (StorageException)
{
Console.WriteLine("If you are running with the default configuration please make sure you have started the storage emulator. Press the Windows key and type Azure Storage to select and run it from the list of applications - then restart the sample.");
Console.ReadLine();
throw;
}

Console.WriteLine();
return table;
}

}
}

最佳答案

根据您的代码和描述,我猜您的代码无法创建表的原因与您的异步 saveInAzureTable 有关。

我猜你在控制台 main 方法或其他方法中调用了这个方法。

如果您的 main 方法完全执行,则您的异步方法 saveInAzureTable 不会执行创建表代码。它将结束所有异步方法。所以它可能不会毫无异常(exception)地创建表。

我建议您可以使用 Task 关键字而不是 void。然后你可以使用 wait 关键字等待方法执行好。

 public static async Task saveInAzureTable()
{
AzureStorage azure = new AzureStorage();
CloudTable table = await AzureStorage.CreateTableAsync("aaaaaa");
}

调用这个方法:

   saveInAzureTable().Wait();

关于c# - 在 Azure 表中创建表无一异常(exception)地失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44013645/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com