2010-04-19 52 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