2010-04-19 4 views
2

Google Analytics와 Google지도를 모두 활용하는 사이트가 있습니다. 이 두 서비스는 모두 사이트 코드에서 관리해야하는 API 키를 가지고 있습니다. Google 애널리틱스의 경우 점심 식사 전에 추적을 테스트 할 수있는 실제 계정과 준비 계정의 두 가지 계정이 있습니다. Google지도의 경우 모든 단일 호스트 이름에 대해 고유 한 API 키가 실제로 필요합니다. 우리는 몇 개의 스테이징 도메인과 로컬 호스트 이름을 가지고 있기 때문에 우리의지도 코드는 API 키를 꽤 많이 토글합니다. 지금 나는 Request.Url.Host에 스위치를 사용하여 각각의 페이지에 대한 코드 숨김 C#을 내 키를 관리하고ASP.NET의 제 3 자 API 키의 다양한 변종 관리

:

// 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에서 응용 프로그램 설정을 사용

  1. : 나는 두 가지 일할 수있는 일을 생각)
  2. 호스트 이름에 따라 다음 키를 모두 처리 할 수있는 클래스가 있습니다. 분석 키와 maps 키의 속성을 가진 정적 클래스를 작성할 수 있으며 Request.Url.Host을 기반으로 해당 속성을 해당 속성에 설정할 수 있습니다. 적절한 값. 이 방법은 본질적으로 헬퍼 클래스로 포장 된 나의 스위치 메소드입니다. 그들은 정말 코드가 아니에요 때문에,

    웹 설정에서 도메인 => apiKey에 쌍을 저장 :

답변

0

은 모두를 수행합니다. 비슷한 web.config 설정 블록의 경우 create custom sections and handlers에게 도움이됩니다. 추가 작업의 보너스는 사용자 정의 섹션 처리기의 기능을 확장하여 환경을 기반으로 올바른 값을 반환 할 수 있다는 것입니다.

하나의 맞춤 섹션 유형을 만든 다음 각 API 키 (지도, 분석 등)에 섹션 하나를 추가하십시오.

0

나는 보통 자신의 파일로 분할 한 다음 위치에 따라 다른 구성 파일을 배포합니다.

의 Web.config

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

C#을

System.Configuration.ConfigurationManager.AppSettings(fieldname) 
+0

이 접근 방식의 문제의 일부는 동일한 코드가 다른 URL에 같은 사이트를 렌더링되도록 동일한 IIS 웹 사이트가 여러 호스트 바인딩을 가지고 있다는 것입니다 . 그게 내가 왜 그렇게 할 수 없는지 ... –

관련 문제