ESB Toolkit 2.0 EndPointConfig (HTTPS with WCF-BasicHttp and the ESB Toolkit 2.0)

Posted by Andy Morrison on Geeks with Blogs See other posts from Geeks with Blogs or by Andy Morrison
Published on Thu, 11 Mar 2010 15:36:36 GMT Indexed on 2010/03/11 17:20 UTC
Read the original article Hit count: 811

Filed under:

Earlier this week I had an ESB endpoint (Off-Ramp in ESB parlance) that I was sending to over http using WCF-BasicHttp.  I needed to switch the protocol to https: which I did by changing my UDDI Binding over to https:  No problem from a management perspective; however, when I tried to run the process I saw this exception:

Event Type:                     Error

Event Source:                BizTalk Server 2009

Event Category:            BizTalk Server 2009

Event ID:   5754

Date:                                    3/10/2010

Time:                                   2:58:23 PM

User:                                    N/A

Computer:                       XXXXXXXXX

Description:

A message sent to adapter "WCF-BasicHttp" on send port "SPDynamic.XXX.SR" with URI "https://XXXXXXXXX.com/XXXXXXX/whatever.asmx" is suspended.

 Error details: System.ArgumentException: The provided URI scheme 'https' is invalid; expected 'http'.

Parameter name: via

   at System.ServiceModel.Channels.TransportChannelFactory`1.ValidateScheme(Uri via)

   at System.ServiceModel.Channels.HttpChannelFactory.ValidateCreateChannelParameters(EndpointAddress remoteAddress, Uri via)

   at System.ServiceModel.Channels.HttpChannelFactory.OnCreateChannel(EndpointAddress remoteAddress, Uri via)

   at System.ServiceModel.Channels.ChannelFactoryBase`1.InternalCreateChannel(EndpointAddress address, Uri via)

   at System.ServiceModel.Channels.ChannelFactoryBase`1.CreateChannel(EndpointAddress address, Uri via)

   at System.ServiceModel.Channels.ServiceChannelFactory.ServiceChannelFactoryOverRequest.CreateInnerChannelBinder(EndpointAddress to, Uri via)

   at System.ServiceModel.Channels.ServiceChannelFactory.CreateServiceChannel(EndpointAddress address, Uri via)

   at System.ServiceModel.Channels.ServiceChannelFactory.CreateChannel(Type channelType, EndpointAddress address, Uri via)

   at System.ServiceModel.ChannelFactory`1.CreateChannel(EndpointAddress address, Uri via)

   at System.ServiceModel.ChannelFactory`1.CreateChannel()

   at Microsoft.BizTalk.Adapter.Wcf.Runtime.WcfClient`2.GetChannel[TChannel](IBaseMessage bizTalkMessage, ChannelFactory`1& cachedFactory)

   at Microsoft.BizTalk.Adapter.Wcf.Runtime.WcfClient`2.SendMessage(IBaseMessage bizTalkMessage)

 MessageId:  {1170F4ED-550F-4F7E-B0E0-1EE92A25AB10}

 InstanceID: {1640C6C6-CA9C-4746-AEB0-584FDF7BB61E}

I knew from a previous experience that I likely needed to set the SecurityMode setting for my Send Port.  But how do you do this for a Dynamic port (which I was using since this is an ESB solution)?

Within the UDDI portal you have to add an additional Instance Info to your Binding named:

EndPointConfig

 Then you have to set its value to:

 SecurityMode=Transport

Like this:

 

 The EndPointConfig is how the ESB Toolkit 2.0 provides extensibility for the various transports.  To see what the key-value pair options are for a given transport, open up an itinerary and change one of your resolvers to a “static” resolver by setting the “Resolver Implementation” to Static.  Then select a “Transport Name” ”, for instance to WCF-BasicHttp.  At this point you can then click on the “EndPoint Configuration” property for to see an adapter/ramp specific properties dialog (key-value pairs.) 

 

Here’s the dialog that popped up for WCF-BasicHttp:

 

I simply set the SecurityMode to Transport.  Please note that you will get different properties within the window depending on the Transport Name you select for the resolver.

When you are done with your settings, export the itinerary to disk and find that xml; then find that resolver’s xml within that file.  It will look like endpointConfig=SecurityMode=Transport in this case.  Note that if you set additional properties you will have additional key-value pairs after endpointConfig=

Copy that string and paste it into the UDDI portal for you Binding’s EndPointConfig Instance Info value.

© Geeks with Blogs or respective owner