2013-03-21 1 views
0

OData 입/출력 형식 지정을 위해 기존 WCF Data Services를 래핑하려는 웹 응용 프로그램이 있습니다.wcf 데이터 서비스 - 저장 변경시 추가 매개 변수 전달

레코드를 검색 할 때 원하는대로 보낼 수 있습니다 (myusername = "blabala", mycurrentusersession = "23434sdfgdf"등). 그러나 "SaveChanges를"내가이 전송을 제어하지 않습니다 -하지만 내가 정말 기존의 응용 프로그램을 제공 할 수있는 능력이 필요합니다 - 내 현재 사용자 세션 - 특정 검색 상태 키를

답변

1

(기존 응용 프로그램 상태입니다) 나가는 요청의 헤더에이 값을 추가 할 수 있습니다.

클라이언트 앱에서 WCF-DataService의 ""을 (를) 수행했다고 가정합니다.

을하고, SendingRequest 이벤트

partial void OnContextCreated() 
{ 
    this.SendingRequest += Entity_SendingRequest; 
} 

에 처리기를 추가하고 Entity_SendingRequest 안에 당신은 헤더를 추가 할 수 있습니다

는 (클라이언트) 서비스의 Reference.cs 내부 OnContextCreated 이벤트를 검색합니다. 당신은 매우 쉽게 WCF-의 DataService의 DataContext에있는 서버 종료 즉 처리 할 수있는

void Entity_SendingRequest(object sender, SendingRequestEventArgs e) 
{ 
    e.RequestHeaders.Add("myusername", "blabala"); 
    e.RequestHeaders.Add("mycurrentusersession", "23434sdfgdf"); 
} 

.

CookieContainer을 전달할 수도 있습니다. 이것이 WCF-Data Services의 폼 인증의 기초입니다.

void Entity_SendingRequest(object sender, SendingRequestEventArgs e) 
{ 
    CookieContainer cookieContainer = new CookieContainer(); 
    foreach (var cc in _cookies) 
    { 
     Cookie cookie = new Cookie(cc.Key, cc.Value.Value); 
     cookieContainer.Add(new Uri("http://localhost", UriKind.Absolute), cookie); 
    } 
    var cookieHeader = cookieContainer.GetCookieHeader(new Uri("http://localhost", 
                  UriKind.Absolute)); 
    e.RequestHeaders["Cookie"] = cookieHeader; 
} 
+0

감사합니다. 2 가지 더 질문 : 웹 클라이언트에서 어떻게 작동합니까? 엔티티 형식을 변경하지 않고 검색 할 때 서버에서 클라이언트로 토큰을 보내려면 어떻게해야합니까? – user355289

+0

WebClient를 통해 더 쉽게 수행 할 수 있습니다. 'client.Headers.Add ("myusername", "blabala");'. OnStartProcessingRequest –

+0

감사합니다. 내 토큰을 클라이언트에게 전달하는 방법을 찾고 있습니다. – user355289