我有一个.net github项目,它基本上是Web API的包装器。在测试项目中,我使用API密钥调用API。我需要将此密钥保密,我如何在Visual Studio项目中完成此任务?
在其他一些项目中,比如python,我可以让git忽略文件(config.py
)并使用config.example.py
之类的东西。但在visual studio的情况下,由于缺少文件Config.cs
,项目将无法编译。解决这个问题的正确方法是什么?我正在考虑使用这种忽略文件的方法,让他们执行一个应该Config.example.cs
重命名为Config.cs
的构建脚本?
答案 0 :(得分: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"];
注意:
答案 1 :(得分:1)
您可能正在寻找项目的App.config
文件。编译时,它将被复制到<application>.exe.config
。用户可以根据需要编辑该配置文件。
在该配置文件中,您可以添加API密钥:
<configuration>
<appSettings>
<add key="APIKey" value="12345"/>
</appSettings>
</configuration>
然后,您可以使用ConfigurationManager.AppSettings
string apiKey = ConfigurationManager.AppSettings["APIKey"];
答案 2 :(得分:1)
一种选择是使用.config文件,而不是在源代码中使用硬编码的密钥。
更多信息Using Settings in C#和step-by-step guide
<configuration>
<appSettings>
<add key="SecretKey" value="0" />
</appSettings>
</configuration>
var secretKey = ConfigurationManager.AppSettings.Get("SecretKey");
答案 3 :(得分:-1)
也许您可以将密钥存储在Config.cs文件之外并在运行时加载它。
奖励,使用您的代码的其他人不必重新编译项目以更改为他们的API密钥。