Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在ASP.NET运行时修改配置_C#_Asp.net_Vb.net_Amazon Web Services - Fatal编程技术网

C# 在ASP.NET运行时修改配置

C# 在ASP.NET运行时修改配置,c#,asp.net,vb.net,amazon-web-services,C#,Asp.net,Vb.net,Amazon Web Services,我有以下问题。我有一个ASP.NET(VB.NET)应用程序,它正试图使用AWS.NET SDK连接到Amazon Web服务,为此,用户输入他们的访问权限和密钥。然后,我将密钥添加到配置中,如下所示: Dim config As Configuration = WebConfigurationManager.OpenWebConfiguration("~") Dim settings As KeyValueConfigurationCollection = config.AppSettin

我有以下问题。我有一个ASP.NET(VB.NET)应用程序,它正试图使用AWS.NET SDK连接到Amazon Web服务,为此,用户输入他们的访问权限和密钥。然后,我将密钥添加到配置中,如下所示:

 Dim config As Configuration = WebConfigurationManager.OpenWebConfiguration("~")
 Dim settings As KeyValueConfigurationCollection = config.AppSettings.Settings
 settings("AWSAccessKey").Value = AmazonAccessKeyText.Text
 settings("AWSSecretKey").Value = AmazonSecretKeyText.Text
 config.Save(ConfigurationSaveMode.Modified)
 ConfigurationManager.RefreshSection("appSettings")

虽然这成功地修改了web.config文件,但它仍然在运行时抛出一个异常,表示找不到访问密钥。有人能告诉我我做错了什么吗?

也许,最好将收到的密钥保存在应用程序对象中?例如静态。
如果我理解正确,您有一个代表客户端连接到AWS的ASP.NET应用程序,那么从安全角度来看,将客户端凭据存储在本地可能是最好的主意。当修改web.config时,它更清晰、更简单,不会导致应用程序的循环

你也可以

  • 仅当需要时才将凭据存储在会话的内存中,如SecureString
  • 使用任何crypt API将它们加密存储在磁盘上

  • amazon sdk不需要存储在app/web.config中的凭据。如果你看到类似于的东西,你会注意到你可以将它们作为参数传递给这个函数

    我不确定我是否理解(我在.NET上的第二周),你能给我举个例子吗?我相信web.config在应用程序启动时只读取一次,所以即使你正在修改它,它也是在应用程序运行时读取的,因此,应用程序当前使用的web.config中不存在该密钥(它在应用程序启动时读取)。希望这是有道理的我建议将信息存储在其他地方-一个db,或者仅仅是另一个文本文件?为什么您试图以这种方式使用配置文件?配置文件应该是已经创建的,如果必须修改,则由用户修改,然后上载。无论是让您的程序为给定用户输入的用户生成文件,这两者都不起作用,数据泄漏正在等待发生。