我有一个同时利用 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
}
我想知道跟踪所有这些键的更好方法是什么。我考虑了两种可行的方法:
- 在我的应用程序设置中使用
web.config
:这里的一个问题是映射键经常根据主机名更改(即映射键的许多变体将是管理的噩梦) - 有一个 C# 类来处理基于主机名的所有这些键:我可以编写一个静态类,它具有分析键和映射键的属性,并基于
Request.Url.Host
我可以将属性设置为适当的值。这个方法本质上是我的 switch 方法封装在一个辅助类中。