5
votes

I am currently working on a requirement to provide routing for a large mapping request, which can have up to 30 querystring items.

On developing my BizTalk project, I have been successful in accepting a http request with a small number of querystrings using the WCF-WebHttp type, promoting the properties and sending the message to the appropriate system via a subscribing send port.

However, if the number of querystrings increases to the point where the URL address exceeds 256 characters, I get the following error:

The value of a promoted property cannot exceed 256 characters. Property "To" Namespace "http://schemas.microsoft.com/BizTalk/2006/01/Adapters/WCF-properties". Parameter name: obj

This is thrown before the receive pipeline. I understand that promoted properties cannot exceed 256 characters, however in this instance I am stuck as I (seemingly) have no control over the property promotion regarding the above property.

Is it possible to configure the BizTalk application not to promote the "To" property? I guess that it is promoted for a reason, so it may not be a feasible solution to do this - if it can be done at all.

With that in mind, is there any other way of creating a receive location that can handle requests with a large amount of querystrings? I had a look at the WCF-Custom, but I couldn't see anything obvious.

1

1 Answers

5
votes

Most likely you are using GET method to expose the service. You should look at using POST method when you have lots of parameters. You can send a json/xml message in Body with all details to a small url. In case you decide to use json, you can use JSON pipeline component to convert the json to XML and then do your routing as required.