从传入消息中获取Set-Cookie并将其放置在传出消息中的Cookie中

时间:2017-02-15 08:56:44

标签: biztalk biztalk-orchestrations biztalk-2016

我有一个收到请求的场景,根据该请求,我必须对后端系统进行一些Web服务调用。所有这些都是在编排中完成的。后端系统是基于会话的,所以首先我执行登录然后我想做我的东西。登录操作使用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的引用没有帮助。

有任何聪明的建议吗?

1 个答案:

答案 0 :(得分:0)

在您通知您的管理层之后,贸易伙伴正在使用一种非常古老且不寻常的模式,您将不得不花费额外的时间,意味着金钱,以适应(此问题由贸易伙伴100%创建) ,它应该很简单。

对于适配器,Set-Cookie不会产生实际的cookie,因为适配器没有会话概念。

您需要从HTTP.InboundHttpHeaders解析cookie值,然后使用该值通过HTTP.HttpCookie或HTTP.UserHttpHeaders设置cookie。

BTW,因为99.9%的场景中的令牌身份验证是愚蠢和不必要的,我总是避免维护令牌而只是“认可”。每次。没理由你让你的应用更复杂。唯一的例外是,如果每次都以相同的顺序执行相同的调用,那么您可以在Orchestration中保存令牌。

相关问题