2010-04-19 65 views
2

我有一個網站可同時使用Google Analytics和Google地圖。這兩種服務都有API密鑰,需要在我們網站的代碼中進行管理。對於Google Analytics(分析),我們有兩個帳戶,一個真實帳戶和分期帳戶,用於在午餐前測試跟蹤。對於Google地圖,我們實際上每個主機名都需要一個唯一的API密鑰。我們有幾個分期域和本地主機名,所以我們的地圖代碼有很多API鍵的切換。在ASP.NET中管理多種第三方API密鑰

現在我管理我的鑰匙在C#代碼隱藏使用在Request.Url.Host開關各自的網頁:

// for analytics in file1 
switch (Request.Url.Host) { 
    case "staging": ltlUACode.Text = "stageKey"; break; 
    case "client.stage.com": ltlUACode.Text = "stageKey"; break; 
    case "www.livesite.com": ltlUACode.Text = "liveKey"; break; 
    case "livesite.com": ltlUACode.Text = "liveKey"; break; 
} 

// for maps in file2 
switch(Request.Url.Host) { 
    case "staging": GoogleMapsKey = "uniqueKey1"; break; 
    case "client.stage.com": GoogleMapsKey = "uniqueKey2"; break; 
    case "www.livesite.com": GoogleMapsKey = "uniqueKey3"; break; 
    // etc 
} 

我想知道什麼更好的方法是跟蹤所有這些鍵。我考慮了兩個可能的事情,可以工作:

  1. 使用的應用程序設置在我web.config:一個問題在這裏雖然是地圖鍵更改往往是基於主機名(即用的映射鍵的許多變種將是一場噩夢管理)
  2. 有一個C#類來處理所有基於主機名,這些項:我可以寫對的分析鍵和映射關鍵屬性靜態類以及基於Request.Url.Host我可以在屬性中設置自己的適當的價值。這個方法本質上是我的switch方法包裝成一個輔助類。

回答

0

一舉兩得:

因爲他們沒有真正的代碼,存儲在Web配置域=> ApiKey對。對於類似web.config設置的大塊,對create custom sections and handlers有幫助。這裏額外工作的好處是,您可以擴展自定義分段處理程序的功能,以便根據環境返回正確的值。

創建一個定製節類型,然後爲每個API密鑰添加(該類型)一個部分(地圖,分析等)。

0

我通常在自己的文件,他們分手了,然後部署基於他們的位置不同的配置文件。

的web.config

<appSettings configSource="Host1.config"> 
     </appSettings> 

C#

System.Configuration.ConfigurationManager.AppSettings(fieldname) 
+0

這種方法的問題之一是,在同一IIS網站上有多個主機綁定,所以相同的代碼呈現不同網址的同一站點。這正是我不能這樣做的原因...... – 2010-04-21 14:55:51