2012-09-05 51 views
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

+0

爲什麼要將配置存儲在代碼文件中?數據文件是一個更好的主意。 – CodesInChaos

回答

6

這是一個完美的.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"]; 

注:

  • 您可以在原來的網絡中保留您的設置。配置文件爲 ,但這可讓您忽略來自 您的git存儲庫的特定設置文件,而不會影響項目的其餘部分的 必要的配置詳細信息。
  • 可以在 這兩個文件中保存相同的「密鑰」,但外部文件將覆蓋原始的 web.config文件值。
+0

那麼他們的api鑰匙將會進入哪一個,我會忽略哪一個? –

+0

我建議使用上面的代碼將API密鑰和特定的詳細信息放在單獨的文件(創建appsettings.config)中。然後忽略git倉庫中的'appsettings.config'文件。這將讓應用程序的其餘部分工作得很好,因爲web.config文件是必須運行的,但不會有像這樣的具體細節。 –

-1

也許您可以將密鑰存儲在Config.cs文件的外部並在運行時加載它。

獎金,使用您的代碼的其他人不必重新編譯該項目更改爲其API密鑰。

1

您可能正在爲項目尋找App.config文件。它在編譯時將被複制到<application>.exe.config。用戶可以根據需要編輯該配置文件。使用ConfigurationManager.AppSettings

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

然後你就可以從你的代碼中訪問它:

在該配置文件,您可以添加您的API密鑰

string apiKey = ConfigurationManager.AppSettings["APIKey"]; 
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");