避免 Web.config 中的重复值
Avoiding duplicated values in Web.config
<appSettings>
<add key="ApiKey" value="xyz"/>
</appSettings>
<system.net>
<mailSettings>
<smtp deliveryMethod="Network">
<network host="smtp.cloudmailapp.com" port="587" userName="user@gmail.com" password="xyz" />
</smtp>
</mailSettings>
</system.net>
如您所见,API 键 "xyz" 出现了两次,是硬编码的。
我可以在这里使用代码吗?我希望能够打电话给
WebConfigurationManager.AppSettings["ApiKey"]
在 Web.config 文件或类似文件中。
我认为对您的问题的简短回答是否定的。配置文件不能像您尝试立即添加的那样包含 C# 代码。
我确实发现另一个 post 问了一个与此非常相似的问题。它是几年前的,但其中有很多反馈看起来可能适用于此。我不会尝试总结最佳答案,而是添加一个 link。 Variables within app.config/web.config
我不确定将变量添加到配置文件的工作流程是什么,但也许作为其中的一部分,您可以 运行 在 web.config 之上添加一些内容以确保您不会没有重复项。
虽然将配置值放在 web.config 中很方便,但它并不是真正存储应用程序设置的地方。造成这种情况的原因有很多:
- 可维护性(您的重复问题是一个)
- 安全(除非您加密 web.config)
- 更改 web.config 重新启动 .NET 应用程序
最好将它们放入数据库并从那里检索它们。一旦你处理了数据库,你就可以设置你的索引,这样你就不允许重复等等。
<appSettings>
<add key="ApiKey" value="xyz"/>
</appSettings>
<system.net>
<mailSettings>
<smtp deliveryMethod="Network">
<network host="smtp.cloudmailapp.com" port="587" userName="user@gmail.com" password="xyz" />
</smtp>
</mailSettings>
</system.net>
如您所见,API 键 "xyz" 出现了两次,是硬编码的。
我可以在这里使用代码吗?我希望能够打电话给
WebConfigurationManager.AppSettings["ApiKey"]
在 Web.config 文件或类似文件中。
我认为对您的问题的简短回答是否定的。配置文件不能像您尝试立即添加的那样包含 C# 代码。
我确实发现另一个 post 问了一个与此非常相似的问题。它是几年前的,但其中有很多反馈看起来可能适用于此。我不会尝试总结最佳答案,而是添加一个 link。 Variables within app.config/web.config
我不确定将变量添加到配置文件的工作流程是什么,但也许作为其中的一部分,您可以 运行 在 web.config 之上添加一些内容以确保您不会没有重复项。
虽然将配置值放在 web.config 中很方便,但它并不是真正存储应用程序设置的地方。造成这种情况的原因有很多:
- 可维护性(您的重复问题是一个)
- 安全(除非您加密 web.config)
- 更改 web.config 重新启动 .NET 应用程序
最好将它们放入数据库并从那里检索它们。一旦你处理了数据库,你就可以设置你的索引,这样你就不允许重复等等。