2017-02-15 9 views
0

요청을받는 시나리오가 있는데 그 요청에 따라 백엔드 시스템에 몇 가지 웹 서비스 호출을해야합니다. 모든 작업은 오케스트레이션에서 수행됩니다. 백엔드 시스템은 세션 기반이므로 먼저 로그인을 수행 한 다음 내 물건을 원합니다. 로그인 작업은 Set-Cookie 헤더로 응답합니다. 그 값을 이후 호출의 쿠키 헤더에 저장하려고합니다. 메시지 할당 모양에서이 작업을 수행하려고 할 때 그러나 :받는 메시지에서 Set-Cookie를 가져 와서 보내는 메시지의 쿠키에 넣습니다.

msg_request2(HTTP.HttpCookie) = msg_loginresponse(HTTP.HttpCookie) 

나는 이벤트 뷰어에서 오류가 발생합니다 :

Inner exception: There is no value associated with the property 'HTTP.HttpCookie' in the message. 
Exception type: MissingPropertyException 
Source: Microsoft.XLANGs.BizTalk.Engine 

가 나는 또한 msg_loginresponse의 HTTP.InboundHttpHeaders 접근 시도했다, 같은 에러 메시지. 결과 메시지가 일시 중단 된 상태에서 InboundHttpHeaders 컨텍스트 속성을 볼 수 있으므로 "있음"을 알 수 있습니다.

내 프로젝트에서 Microsoft.BizTalk.GlobalPropertySchemas.dll에 대한 참조를 추가하지 않아도 도움이되지 않았습니다.

영리한 제안이 있으십니까?

+0

먼저, 실제로 그렇게해야합니까? 요즘에는 API 앱용 쿠키가 거의 존재하지 않습니다. 그들이 더 나은 솔루션으로 업데이트하지 않았습니까? –

+0

예, 불행히도 저는 확신합니다. 내 전화에서 인증 토큰을 보낼 수 있으면 좋겠지 만, 로그인을 한 다음 모든 후속 통화에 쿠키를 복사해야합니다. –

답변

0

무역 파트너가 무역 파트너가 작성한 매우 오래된 패턴과 비정상적인 패턴을 사용하고 있음을 알린 후 거래 파트너가이 문제를 100 % 만들었습니다.), 꽤 간단해야합니다.

어댑터의 경우 어댑터에 세션 개념이 없기 때문에 Set-Cookie는 실제 쿠키를 생성하지 않습니다.

HTTP.InboundHttpHeaders에서 쿠키 값을 구문 분석 한 다음 해당 값을 사용하여 HTTP.HttpCookie 또는 HTTP.UserHttpHeaders로 쿠키를 설정해야합니다.

사실, 99.9 %의 시나리오에서 토큰 인증이 어리석고 불필요하기 때문에 매번 토큰을 유지하지 않고 '인증'만하지 않아도됩니다. 앱을 더 복잡하게 만들 필요가 없습니다. 유일한 예외는 동일한 호출이 매번 동일한 순서로 수행 된 다음 오케스트레이션에서 토큰을 보유 할 수있는 경우입니다.