I'm using ESB + BizTalk. In my itinerary, I make a call to an external website. In my
I am calling ESB Itinerary Cache, the ESB Dispatcher. My issue is that the data being sent needs to be in JSON format for the request and the response.
Can I do this using the included pipeline components, or do I need to write custom pipeline code?
Add the JSON Encoder to the Encoder part of the Send Pipeline and JSON Decoder to Decode Sescion of the Receive Pipe.
You probably want the JSON Encoder after the ESB components in the send, and the JSON Decoder before the ESB component in the receive.
Related
My question is regarding the send and receive pipelines in a single solicit-response send port. Is it possible the receive pipeline (response part) can access information from the send pipeline?
Out of the box no, as per Access promoted property in the response message context on Request-Response port
So you have the following options
Orchestration. You can retain the value of the request here and add it to any response going back to whichever calling system.
Have the system that is sending the response to BizTalk include that value in a field, then you can just promote that.
Custom Pipeline Components that use some sort of static dictionary to store any values from the Request, then populate the Response.
I'm using SignalR 2.2.2 Asp.Net 4.5 Web Application. I want to access the current http response object of the client caller but don't know how. How do I reference the response object? I've tried Context.Request.GetHttpContext().Response but it errors out saying "It does not exist in the current context". Can someone please assist and point me in the right direction.
SignalR does not let the user write directly to HttpResponse Stream for a couple of reasons and even if you found a way to do this it is not a good idea:
when using WebSockets transport SignalR uses webSockets to send messages so writing to HttpResponse would not work (and is not possible)
SignalR uses its own JSON based protocol if you write anything directly you will most likely create invalid SignalR messages which the client will not be able to process
If you want to send PDFs over SignalR you will need to be able to save it to a stream (e.g. MemoryStream) and invoke the client with an array created from this stream. (Note that the version of SignalR you are using is using JSON based protocol so sending binary data will be quite inefficient - it might be better to use SignalR to let the client know there is a PDF they can download and then the client would download it using e.g. HTTP GET request)
I need to call a web service that has multiple parameters with BizTalk. With the SOAP adapter, I could send a multi-part message (one part for each parameter). However, I would like to use the WCF-BasicHttp adapter instead, since the SOAP adapter has been deprecated since BizTalk 2009.
From various sources, I see that the WCF adapters do not support calling multi-parameter operations (see for example Scenario 4 in http://seroter.wordpress.com/biztalk-and-wcf-part-v-publishing-operations-patterns/)
Is there any way to workaround this limitation, for example by developing a custom pipeline component?
You are right: WCF adapter doesn't support multi-part messages which is a miss. There is excellent post on the topic here: http://blog.sabratech.co.uk/2009/08/biztalk-wcf-adapter-and-multipart.html
If having multi-part message is important for some reason you can still use SOAP adapter in BTS2010. To add Web Reference click "Advanced" on the "Add Service Reference" popup and then "Add Web Reference". This should work but WCF adapter is considered better for many reasons.
Did you consider mapping all parts from your multi-part message to single WCF request message and then mapping response back?
So in the TryReceive() method construct the message object and return it to the engine which will be submitted to the message box. My scenario requires the receive-response message exchange pattern, in a way that adapter will send a reply back to the LOB system when the incoming received message is successfully committed to the messaggebox, where should I send the response message?
Thanks.
It looks like you want to expose some of you application schemas as a WCF service. You can do this by using the WCF Service Publishing Wizard, which you can find in the BizTalk program menu (from All Programs).
If this is the case and you want further guidance then reply to this via a comment and I will expend this answer.
WCF LOB Adapter SDK supports this scenario as mentioned here http://msdn.microsoft.com/en-us/library/bb798121%28v=bts.10%29.aspx.
It seems like a combination of Synchronous Inbound and Asynchronous Outbound.
Can I get the response headers from a RemoteObject request? If so, how?
I am in the process of writing an application in Flex 3.3, using the Cairngorm framework, for deployment as an AIR application. The application heavily utilizes RemoteObject services to get data from a web server.
Each of my service delegates extends a common class which provides a method for calling service methods on the RemoteObject.
So, where I previously used
ServiceLocator.getInstance().getRemoteObject('myService').myOperation.send();
I instead use
this.send('myOperation', 'myService');
I use this method instead of calling the RemoteObject operations directly because this method adds another, global, responder to the operation call. This extra responder analyses data in the headers of reponse from the server.
Or at least it should -- this is where the problem is. In the result data (event as mx.rpc.events.ResultEvent) the headers property is always null despite the headers definitely being sent from the server.
Thanks
Unfortunately response headers are available only for URLLoader and only when using it in an AIR application:
Access HTTP response headers in for flash.net.URLLoader object?