C# 在ASP.NET运行时修改配置
我有以下问题。我有一个ASP.NET(VB.NET)应用程序,它正试图使用AWS.NET SDK连接到Amazon Web服务,为此,用户输入他们的访问权限和密钥。然后,我将密钥添加到配置中,如下所示: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
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时,它更清晰、更简单,不会导致应用程序的循环 你也可以
amazon sdk不需要存储在app/web.config中的凭据。如果你看到类似于的东西,你会注意到你可以将它们作为参数传递给这个函数我不确定我是否理解(我在.NET上的第二周),你能给我举个例子吗?我相信web.config在应用程序启动时只读取一次,所以即使你正在修改它,它也是在应用程序运行时读取的,因此,应用程序当前使用的web.config中不存在该密钥(它在应用程序启动时读取)。希望这是有道理的我建议将信息存储在其他地方-一个db,或者仅仅是另一个文本文件?为什么您试图以这种方式使用配置文件?配置文件应该是已经创建的,如果必须修改,则由用户修改,然后上载。无论是让您的程序为给定用户输入的用户生成文件,这两者都不起作用,数据泄漏正在等待发生。