避免 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 应用程序

最好将它们放入数据库并从那里检索它们。一旦你处理了数据库,你就可以设置你的索引,这样你就不允许重复等等。