2010-06-25 5 views
1

저는 WCF DataServices (OData)를 처음 사용하고 있으며 URI를 하드 코딩하지 않고 클라이언트에서 엔터티 컨테이너를 인스턴스화하는 가장 좋은 방법을 알아야합니다. 이 하드 코드 서비스 주소와 같은 어떤 이해가되지 않기 때문에, 그러나URI를 하드 코딩하지 않고 WCF DataServices 클라이언트를 인스턴스화하는 방법

Uri uri = new Uri("http://www.someservice.svc"); 
DataServiceContext svc = new DataServiceContext(uri); 

, 내가 어딘가에서 뭔가가되어야합니다 알고 MSDN에있는 모든 예제는이 같은 클라이언트의 인스턴스를 설명하는 것 같다 이. 우선, 개발 환경에서 테스트 환경으로 QA에서 생산 환경으로 이동할 때 각 환경에서 URI가 다를 가능성이있을 때 어떻게 주소를 동적으로 변경합니까?

감사 인사.

답변

4

DataService URL을 예 : 당신의 Settings 파일이나 그냥 일반 app.config :

Uri uri = new Uri(ConfigurationManager.AppSettings["ServiceURI"]); 
DataServiceContext svc = new DataServiceContext(uri); 

그리고 당신의 app.config (웹 응용 프로그램 또는 web.config)에서 :

<appSettings> 
    <add key="ServiceURI" value="http://www.someservice.svc" /> 
</appSettings> 

또는 데이터베이스 설정 테이블에서 잡아 ..... 나 또는 또는 또는 ..... 많은 선택!

URI는 단지 문자열 일뿐입니다. 사용자가 가질 수있는 구성 소스로부터 얻을 수 있습니다.

열린 우리당의 기본 = 응용 프로그램을 : 당신이 실버 라이트 응용 프로그램과 함께 작업하는 경우

+1

나는 그것을 생각했다. 단지 AppSettings에 넣었다. 그러나 나는 이것에 접근하는 데 더 많은 "프레임 워크 중심"방법이 있어야한다고 생각했다. 답변을 수락하기 전에 다른 사람이 더 나은 접근 방식을 사용하는지 알아보기 위해 조금 기다릴 것이지만, 그럴 수도 있습니다. – camainc

1

당신은 그런 다음 서비스 열린 우리당을 얻기 위해 상대 URI를 추가 할 수 있습니다 application.current.host
으로 XAP의 URI에 액세스 할 수 있습니다. current.host; Uri relService = new Uri (".. \ someservice.svc", System.UriKind.Relative);

Uri service = new Uri (base, relService); DataServiceContext svc = new DataServiceContext (서비스);

관련 문제