2

Google アナリティクスと Google マップの両方を利用するサイトがあります。これらのサービスには両方とも、サイトのコードで管理する必要がある API キーがあります。Google アナリティクスには、ランチ前にトラッキングをテストするためのライブ アカウントとステージング アカウントの 2 つのアカウントがあります。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
}

これらすべてのキーを追跡するためのより良い方法を知りたいです。機能する可能性のある2つのことを検討しました。

  1. my でアプリ設定を使用するweb.config: ただし、ここでの問題の 1 つは、マップ キーがホスト名に基づいて頻繁に変更されることです (つまり、マップ キーの多くのバリアントを管理するのは悪夢です)。
  2. ホスト名に基づいてこれらすべてのキーを処理する C# クラスを用意する: 分析キーとマップ キーのプロパティを持つ静的クラスを記述し、それに基づいてRequest.Url.Hostプロパティを適切な値に設定できます。このメソッドは基本的に、ヘルパー クラスにラップされた私の switch メソッドです。
4

2 に答える 2

0

両方を行う:

これらは実際にはコードではないため、Domain => ApiKey のペアを Web 構成に保存します。同様の web.config 設定の大きなブロックについては、カスタム セクションとハンドラーを作成すると便利です。ここでの余分な作業のボーナスは、カスタム セクション ハンドラーの機能を拡張して、環境に基づいて正しい値を返すこともできることです。

カスタム セクション タイプを 1 つ作成し、API キー (マップ、分析など) ごとに (そのタイプの) セクションを 1 つ追加します。

于 2010-04-19T16:57:59.493 に答える
0

私は通常、それらを独自のファイルに分割し、その場所に基づいて異なる構成ファイルを展開します。

web.config

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

c#

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