November 2008 Entries

Password in SOAP Ports

I've inherited a BizTalk 2006 applicaton that uses serveral SOAP ports to request data from a 3rd party web service. The web service is secured by "basic" authentication - username / password. After making a few enhancements to the application I deployed to an integration test server which has access to the 3rd party web service. The BizTalk app was unable to retrieve the data and I soon realised that I had forgotten to set the username / password on the SOAP send ports. I wanted the make deployment ......

Parameters lost in SOAP Request

I started testing a BizTalk application today which calls a 3rd party service, passing a couple of datetime parameters, to retrieve a dataset which is then persisted to a SQL Server database. This application had been running well in production for a while but enhancements were required to make use of web methods recently made available by the 3rd party. After making the changes I tested the BTS application on my dev box, calling a stubbed web service installed locally. I then deployed the BizTalk ......

Web service response

I started developing a new BizTalk application today which must call an existing web service. Unfortunately I didn't have access to the web service from my test environment so I had to create a test stub. The web service method I needed accepted a string and returned an object containing an int and a bool. My first step was to examine the wsdl of the existing web service to get a good idea of the type my stub should be returning. Because the input / output parameters were simple it was only ten minutes ......

Map Test Fails with 'Value cannot be null'

I have a biztalk map which uses a custom XSLT file rather than the graphical mapper. This map makes use of methods held in a custom dll, accessing via a custom extension XML file. I created this map a while ago, came back to it today (on a new vm) and found that I was unable to run a successful test - right click the btm in solution explorer and hit 'test map'. On trying this I was presented with a lengthy error message - the important bit being: Value cannot be null. Parameter name: extension My ......

XSLT - if then else

If you try and implement if then else logic in XSLT in the same way that you would in a procedural language then you'll probably end up tying yourself in knots. I had some XSLT to write today where I simply needed to check the existance of an attribute in the source document. If it existed then I would execute and addition against the value else I would substitue for a zero. I had initially approached this with something like: <xsl:choose> <xsl:when test="referenceToElemen/@at... ......

MSI Import - Phantom Binding

Had an error today when attempting to import a BizTalk MSI through the Admin Console. It was complaining that a particular adapter had not been configured to work with a particular host. Indeed this was true, however what puzzled me was that there was no refernce to this host in the binding file which had been added to the MSI. After a fair amount of head scratching I tracked back to the orchestration that contained the logical port which matched to the physical port (SOAP) that was mentioned in ......

SSL Send Port

Had to configure a send port today to post an XML message to a website secured over HTTPS. The send was failing, with the following being written to the even log: "The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel." This got me thinking that we must be missing the public key for the site but I was able to browse to it from Internet Explorer and could confirm that the key could be found in the expected certificates stores on the client (my) ......

BizTalk and SQL Server Security

This entry is in the hope that I don't fall over this problem again. It's really very straight-forward but has cost me half an hour more than once. I need to create a new SQL receive port today, to receive from a new database and run under a new BizTalk host instance. Step I took: 1. I created a new SQL Server account and granted permissions required to execute the stored procedure that the BizTalk receive location would execute 2. I created a new windows account for the new BizTalk host instance ......

Failed to load web service proxy

I started work on a solution new to me this morning. The solution was currently in production and working fine. I had opened it up because enhancements were required to consume new web methods from a third party. After getting the source files from the source control repository I had the usual problem of missing references to sort out. I then noticed that the solution contained a web service project with two set of web references; one pointing to the live url of the 3rd party and another pointing ......

Log Web Service Call

When troubleshooting calls made via the BizTalk SOAP adapter I often find myself wanting to check the data that was posted to the web service. Adding the following to a test asmx page does the trick: HttpContext.Current.Request... + Guid.NewGuid().ToString() + ".txt", true); Don't forget to grant access to the log_folder for the id that the web service runs under. www.biztalkers.co.uk ......