C# 如何利用静态类包装配置值?
我正在尝试使用静态类检索配置值:C# 如何利用静态类包装配置值?,c#,.net,azure,visual-studio-2017,azure-functions,C#,.net,Azure,Visual Studio 2017,Azure Functions,我正在尝试使用静态类检索配置值: public static class Configurator { public static string HashesConnectionString { get; } = Environment.GetEnvironmentVariable("HashesConnectionString"); public static string SftpUser { get; } = Environment.GetEnvironmentVariab
public static class Configurator
{
public static string HashesConnectionString { get; } = Environment.GetEnvironmentVariable("HashesConnectionString");
public static string SftpUser { get; } = Environment.GetEnvironmentVariable("SftpUser");}
当试图从单独的类检索这些时,我遇到了一个非常尴尬的错误:
System.TypeInitializationException
HResult=0x80131534
Message=The type initializer for 'MyHandler.Configuration.Configurator' threw an exception.
Source=MyHandler
StackTrace:
at MyHandler.Configuration.Configurator.get_HashesConnectionString() in C:\Users\John.S\source\repos\MyHandler\MyHandler\Configuration\Configurator.cs:line 11
at MyHandler.OnMumboCaseBlobTriggered.RunAsync(CloudBlockBlob blob, String name, TraceWriter log) in C:\Users\John.S\source\repos\MyHandler\MyHandler\Functions\OnMumboCaseBlobTriggered.cs:line 31
at Microsoft.Azure.WebJobs.Host.Executors.VoidMethodInvoker`2.InvokeAsync(TReflected instance, Object[] arguments)
at Microsoft.Azure.WebJobs.Host.Executors.FunctionInvoker`2.<InvokeAsync>d__9.MoveNext()
Inner Exception 1:
ArgumentNullException: Value cannot be null.
Parameter name: String
但例外依然存在
我的静态类有什么问题?我是否不当地使用了此类?
此示例中出现此异常:
public static void RunAsync([BlobTrigger("awesomeBlobber", Connection = "StorageConnectionString")] CloudBlockBlob blob, string name, TraceWriter log)
{
var connString = Configuration.Configurator.HashesConnectionString;
}错误指向上面的代码段中未包含的
HashesConnectionString
。这似乎是一个错误。A应该有助于澄清实际的问题,我相信您在get_HashesConnectionString getter中有一些失败的逻辑。另外,我假设您正在尝试处理连接字符串,但您指定了一个错误的环境变量名(从应该读取的位置),并且得到了“null”而不是它的值。@IgorGnedysh没有逻辑,先生。这是一个简单的get
。硬编码值public static string HashesConnectionString{get;}=“my hardcoded value”
产生了相同的结果exception@MoreOrLessYou好问题。不,没有。我试图添加一个公共构造函数,但得到了相同的例外情况,即您确定没有某种名称空间冲突。尝试修改名称空间。你不应该用=>
代替=
?
public static void RunAsync([BlobTrigger("awesomeBlobber", Connection = "StorageConnectionString")] CloudBlockBlob blob, string name, TraceWriter log)
{
var connString = Configuration.Configurator.HashesConnectionString;