ASP.NETのサードパーティAPIキーの多くのバリエーションの管理
質問
GoogleアナリティクスとGoogleマップの両方を活用するサイトがあります。これらのサービスには、サイトのコードで管理する必要があるAPIキーがあります。 Google Analyticsには、昼食前に追跡をテストするための2つのアカウント、ライブアカウントとステージングアカウントがあります。 Googleマップの場合、実際には、ホスト名ごとに一意のAPIキーが必要です。いくつかのステージングドメインとローカルホスト名があるため、マップコードにはAPIキー用の切り替えがかなりあります。
今、私はそれぞれのページのC#Code-Behindで自分のキーを管理しています。 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
}
これらすべてのキーを追跡するためのより良い方法が何であるかを知りたいです。私は機能する可能性のある2つの可能なことを考えました:
- 私のアプリ設定を使用します
web.config
: :ただし、ここでの問題の1つは、ホスト名に基づいてマップキーが頻繁に変更されることです(つまり、マップキーの多くのバリアントが管理する悪夢になることです) - ホスト名に基づいてこれらすべてのキーを処理するC#クラスがあります。分析キーとマップキーのプロパティを備えた静的クラスを書くことができます。
Request.Url.Host
プロパティを適切な値に設定できました。この方法は、基本的に私のスイッチメソッドをヘルパークラスにまとめました。
解決
両方を行う:
それらは実際にはコードではないため、domain => apikeyペアをWeb構成に保存します。同様のweb.config設定の大きなブロックの場合、それは役に立ちます カスタムセクションとハンドラーを作成します. 。ここでの追加作業のボーナスは、カスタムセクションハンドラーの機能を拡張して、環境に基づいて正しい値を返すことができることです。
1つのカスタムセクションタイプを作成し、各APIキー(マップ、分析など)に1つのセクション(そのタイプの)を追加します。
他のヒント
私は通常、それらを独自のファイルに分割し、その場所に基づいて異なる構成ファイルを展開します。
web.config
<appSettings configSource="Host1.config">
</appSettings>
C#
System.Configuration.ConfigurationManager.AppSettings(fieldname)
所属していません StackOverflow