1

我有一个 .net github 项目,它基本上是一个 Web API 的包装器。在测试项目中,我使用 API 密钥调用 API。我需要将此密钥保密,如何在 Visual Studio 项目中完成此操作?

在其他一些项目中,比如 python,我可以让 git 忽略文件 ( config.py) 并使用类似config.example.py. 但在 Visual Studio 的情况下,由于缺少文件,该项目将无法编译Config.cs。解决这个问题的正确方法是什么?我正在考虑使用相同的方法来忽略文件并让他们执行应该重命名Config.example.cs为的构建脚本Config.cs

4

4 回答 4

9

这是 .config 文件的完美选择。根据它是 Web 应用程序还是控制台应用程序,您的项目中将有一个 web.config 或 app.config 文件。

您可以使用该appSettings部分来存储您的 API 密钥。

为了使事情变得更容易,您实际上可以从另一个文件中读取此部分,即:specialappsettings.config,然后从您的存储库中忽略该单个文件。

修改您的web.config(或app.config):

<configuration>
<appSettings file="specialappsettings.config">
</appSettings>
<system.web>
<!-- standard web settings go here -->
</system.web>
</configuration>

创建一个新的specialappsettings.config文件:

<appSettings>
<add key="APIKey" value="YourApiKeyValue" />
<add key="AnotherKey" value="AnotherValue" />
</appSettings>

这可以通过以下方式在您的代码中访问:

var apiKey = ConfigurationManager.AppSettings["APIKey"];

笔记:

  • 您也可以将设置保留在原始 web.config 文件中,但这可以让您只忽略 git 存储库中的特定设置文件,而不会影响项目的其余必要配置细节。
  • 可以将相同的“密钥”保存在任一文件中,但外部文件将覆盖原始 web.config 文件值。
于 2012-09-05T22:42:09.087 回答
1

您可能正在寻找App.config项目的文件。<application>.exe.config当你编译它时,它会被复制到。用户可以根据需要编辑该配置文件。

在该配置文件中,您可以添加 API 密钥:

<configuration>
    <appSettings>
        <add key="APIKey" value="12345"/>
    </appSettings>
</configuration>

然后您可以使用以下代码从您的代码中访问它ConfigurationManager.AppSettings

string apiKey = ConfigurationManager.AppSettings["APIKey"];
于 2012-09-05T22:38:49.910 回答
1

一种选择是使用 .config 文件,而不是在源代码中硬编码密钥。

更多信息在 C# 中使用设置分步指南

<configuration>
   <appSettings>
      <add key="SecretKey" value="0" />
   </appSettings>
</configuration>


var secretKey = ConfigurationManager.AppSettings.Get("SecretKey");
于 2012-09-05T22:40:43.713 回答
-1

也许您可以将密钥存储在 Config.cs 文件之外并在运行时加载它。

奖励,使用您的代码的其他人无需重新编译项目即可更改为他们的 API 密钥。

于 2012-09-05T22:35:27.227 回答