我正在编写一个控制台应用程序作为工作中的一个小工具来加密/解密传入的数字。以下代码会引发此错误:
private static readonly string _encryptedKey =
ConfigurationManager.AppSettings["AffinityEncryptedKey"];
private static readonly string _encryptedInitializationVector =
ConfigurationManager.AppSettings["AffinityEncryptedInitializationVector"];
private static readonly byte[] _key = Convert.FromBase64String(
ServiceLocator.Current
.GetInstance<IEncryptionService>()
.Decrypt(_encryptedKey));
private static readonly byte[] _initializationVector = Convert.FromBase64String(
ServiceLocator.Current
.GetInstance<IEncryptionService>()
.Decrypt(_encryptedInitializationVector));
static void Main(string[] args)
{ ... }
这一行:private static readonly byte[] _key = Convert.FromBase64String(ServiceLocator.Current.GetInstance<IEncryptionService>().Decrypt(_encryptedKey))
正在抛出错误,我确信它之后会发生爆炸。
我正在从app.config文件中检索的值存在并成功检索。我在项目中引用了IEncryptionService和ServiceLocator的DLL,并通过using语句包含它。
我在调试时检查了InnerException,它说:Object reference not set to an instance of an object
,源是Microsoft.Practices.ServiceLocation
。问题是Current
的{{1}}属性为空。
我不知道如何解决这个问题。我从另一个项目的其他地方逐字复制了代码。有谁知道为什么ServiceLocator
属性为null,我该怎么做才能纠正这个问题?谢谢你的帮助。