2017-02-15 7 views
0

私はリクエストを受け取り、そのリクエストに基づいてバックエンドシステムにいくつかのWebサービスコールを行う必要があります。すべてがオーケストレーションで行われます。バックエンドシステムはセッションベースなので、まずログインを実行してから自分のものをやりたい。ログイン操作はSet-Cookieヘッダーで応答します。後続の呼び出しでその値をCookieヘッダーに配置します。メッセージの割り当ての形でこれをやろうとしたときただし、:着信メッセージからSet-Cookieを取り出し、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アプリのCookieはほとんど存在していません。より良いソリューションにアップデートしていないと確信していますか? –

+0

ええ、残念ながら私は確信しています。私は私の呼び出しで何らかの認証トークンを送ることができればいいと思いますが、それを証明するためにログインをしてから、その後のすべての呼び出しにクッキーをコピーする必要があります。 –

答えて

0

トレーディングパートナが非常に古くて珍しいパターンを使用していることを管理者に伝えた後で、余裕を持って時間を費やすことになります(この問題はトレーディングパートナによって100%作成されます) )、それはかなりシンプルでなければなりません。

アダプターでは、セッションの概念がないため、Set-Cookieは実際のクッキーを生成しません。

HTTP.InboundHttpHeadersからCookie値を解析し、その値を使用してHTTP.HttpCookieまたはHTTP.UserHttpHeadersでCookieを設定する必要があります。

ところで、シナリオの99.9%のトークン認証が愚かで不必要なので、毎回トークンを維持するのではなく、常に「認証」することは避けてください。アプリをもっと複雑にする理由はありません。唯一の例外は、同じ呼び出しが毎回同じ順序で実行され、次にオーケストレーションでトークンを保持できる場合です。

関連する問題