質問

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つの可能なことを考えました:

  1. 私のアプリ設定を使用します web.config: :ただし、ここでの問題の1つは、ホスト名に基づいてマップキーが頻繁に変更されることです(つまり、マップキーの多くのバリアントが管理する悪夢になることです)
  2. ホスト名に基づいてこれらすべてのキーを処理する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)
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top