我正在使用共享层将.NET Core Web应用程序部署到Azure。
下面是我的app.config文件
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings>
<add key="SASToken" value="" />
<add key="StorageAccountPrimaryUri" value="" />
<add key="StorageAccountSecondaryUri" value="" />
</appSettings>
</configuration>
在Azure门户上的“应用程序”设置下,我已更新了以下内容,
但是,当我访问API时,出现以下异常详细信息,并显示Http 500错误,
System.ArgumentException: The argument must not be empty string.
Parameter name: sasToken
at Microsoft.WindowsAzure.Storage.Core.Util.CommonUtility.AssertNotNullOrEmpty(String paramName, String value)
at Microsoft.WindowsAzure.Storage.Auth.StorageCredentials..ctor(String sasToken)
at ProfileVariable.DataAccessor.AzureTableStorageAccount.TableStorageAccount.ConfigureAzureStorageAccount() in C:\Users\sranade\Source\Repos\ProfileVariableService\ProfileVariable.DataAccessor\AzureTableStorageAccount\TableStorageAccount.cs:line 22
答案 0 :(得分:1)
对于.NET Core Web应用,通常将设置放在appsettings.json
中。
{
"SASToken": "TOKENHERE",
"StorageAccountPrimaryUri":"CONNECTIONSTRING",
...
}
要在appsetting.json中获取价值,请利用注入的IConfiguration对象。
使用Interface重构代码并添加IConfiguration字段。
public interface ITableStorageAccount { string Method(); }
public class TableStorageAccount : ITableStorageAccount
{
private readonly IConfiguration Configuration;
public TableStorageAccount(IConfiguration configuration)
{
Configuration = configuration;
}
// an example return table storage uri
public string Method()
{
string cre = Configuration["SASToken"];
CloudTableClient table = new CloudTableClient(new Uri("xxx"), new StorageCredentials(cre));
return table.BaseUri.AbsolutePath;
}
}
startup.cs中的配置依赖项注入
public void ConfigureServices(IServiceCollection services)
{
...
services.AddSingleton<ITableStorageAccount, TableStorageAccount>();
}
在控制器中使用服务。
private readonly ITableStorageAccount TableStorageAccount;
public MyController(ITableStorageAccount TableStorageAccount)
{
this.TableStorageAccount = TableStorageAccount;
}
在Program.cs模板中。
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.Build();
CreateDefaultBuilder()
完成加载诸如appsetting.json之类的配置的工作,请参见docs中的更多详细信息。