我有一个利用谷歌分析和谷歌地图的网站。这两个服务都有API密钥,需要在我们站点的代码中进行管理。对于,我们有两个帐户,一个实时帐户和一个暂存帐户来测试午餐前的跟踪。对于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
中使用应用程序设置:不过,这里的一个问题是,地图键经常根据主机名变化(例如,映射键的许多变体将是管理的噩梦)Request.Url.Host
,我可以将属性设置为它们的适当值。这个方法本质上是我的开关方法,它封装在一个助手类中。发布于 2010-04-19 16:57:59
两者兼备:
因为它们不是真正的代码,所以将域=> ApiKey对存储在web配置中。对于大型的类似web.config设置块,这对创建自定义节和处理程序很有帮助。这里额外工作的好处是,您可以扩展自定义节处理程序的功能,以返回基于环境的正确值。
创建一个自定义节类型,然后为每个api键(映射、分析等)添加一个节(该类型)。
发布于 2010-04-19 17:03:07
我通常将它们拆分到它们自己的文件中,然后根据它们的位置部署不同的配置文件。
web.config
<appSettings configSource="Host1.config">
</appSettings>
c#
System.Configuration.ConfigurationManager.AppSettings(fieldname)
https://stackoverflow.com/questions/2669210
复制相似问题