2

我有一个同时利用 Google Analytics 和 Google Maps 的网站。这两项服务都有 API 密钥,需要在我们网站的代码中进行管理。对于 Google Analytics,我们有两个帐户,一个真实帐户和一个临时帐户,用于在午餐前测试跟踪。对于 Google 地图,我们实际上需要为每个主机名提供唯一的 API 密钥。我们有几个暂存域和本地主机名,所以我们的地图代码有相当多的 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 方法封装在一个辅助类中。
4

2 回答 2

0

两者都做:

由于它们不是真正的代码,因此将 Domain => ApiKey 对存储在 Web 配置中。对于大块类似的 web.config 设置,创建自定义部分和处理程序很有帮助。这里额外工作的好处是您可以扩展自定义部分处理程序的功能,以根据环境返回正确的值。

创建一个自定义部分类型,然后为每个 api 键(地图、分析等)添加一个(该类型的)部分。

于 2010-04-19T16:57:59.493 回答
0

我通常将它们拆分为自己的文件,然后根据它们的位置部署不同的配置文件。

网络配置

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

C#

System.Configuration.ConfigurationManager.AppSettings(fieldname)
于 2010-04-19T17:03:07.960 回答