<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;A0YHQHY-eyp7ImA9WhRUGUo.&quot;"><id>tag:blogger.com,1999:blog-1482776199578137808</id><updated>2012-01-31T05:05:31.853+02:00</updated><category term="CXF" /><category term=".Net 2.0" /><category term="Visual Studio" /><category term="OpenGIS" /><category term="design patterns" /><category term="tools" /><category term="Performance" /><category term="JBossWS" /><category term="Gml" /><category term="AXIS2" /><category term="Security" /><category term="Azure" /><category term="ClearUsernameBinding" /><category term="Unit Tests" /><category term="c#" /><category term="BindingBox" /><category term="WSDL" /><category term="Community" /><category term="TDD" /><category term="Cryptic error messages" /><category term="windows" /><category term="JAX-WS" /><category term="SSL" /><category term="XML Schema" /><category term="wsdl2" /><category term="gSOAP" /><category term="WSE VS2008" /><category term="WS-*" /><category term="NUnit" /><category term="WSE" /><category term="Html5" /><category term="MIME" /><category term="MTOM" /><category term="Asp.Net" /><category term="wif" /><category term="WCF proxy" /><category term="MVP" /><category term="federation" /><category term="WSE VS2005" /><category term="Session" /><category term="WSIT" /><category term="WebSphere" /><category term="quiz" /><category term="Google" /><category term="Rest" /><category term="Attachments" /><category term="SOAP" /><category term="X.509" /><category term="DIME" /><category term="iPhone" /><category term="WSO" /><category term="WCF" /><category term="Penetration" /><category term="WCF VS2008" /><category term="log4net" /><category term="Hacking" /><category term="Web Services Interoperability" /><category term="Spring-WS" /><category term="ws-security" /><category term="blogging" /><category term="Silverlight" /><category term="rampart" /><category term="WSI" /><category term="EULA" /><title>Yaron Naveh's Web Services 2.0 Blog</title><subtitle type="html">Web Services Security, Interoperability and Performance - WCF, Axis2, WSIT...</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://webservices20.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://webservices20.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/1482776199578137808/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Yaron Naveh (MVP)</name><uri>http://www.blogger.com/profile/11793800386245798442</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://2.bp.blogspot.com/_6DvmzgV-o20/TKczhOA8ODI/AAAAAAAABWI/y6trZ_YyLPU/S220/me_small.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>147</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/WebServices20" /><feedburner:info uri="webservices20" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>WebServices20</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><entry gd:etag="W/&quot;DEAGR3s9eyp7ImA9WhZaFUk.&quot;"><id>tag:blogger.com,1999:blog-1482776199578137808.post-3901971865529412616</id><published>2011-07-01T21:58:00.000+03:00</published><updated>2011-07-01T21:58:46.563+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-01T21:58:46.563+03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="MVP" /><title>I'm an MVP (again!)</title><content type="html">I guess I can skip the &lt;a href="http://geekswithblogs.net/dotNETvinz/archive/2011/07/01/microsoft-mvp-again-for-2011.aspx"&gt;traditional&lt;/a&gt; &lt;a href="http://ryanhayes.net/blog/community/microsoft-mvp-award-announcement/"&gt;email quote&lt;/a&gt; by now. I just got the 2011 MVP award in Connected System Developer. &lt;a href="http://webservices20.blogspot.com/2010/07/im-microsoft-mvp.html"&gt;Becoming an MVP&lt;/a&gt; last year was the beginning of a very &lt;a href="http://webservices20.blogspot.com/2011/04/and-were-back.html"&gt;interesting year&lt;/a&gt;. I'm super exited to get this award for the second time. I'll do my best to justify this recognition.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-fDlJxsYcy68/Tg4W9CqhTdI/AAAAAAAABf8/hppiYWRaYW8/s1600/MVP_horizontal.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img style="border-width:0px;" border="0" height="81" width="200" src="http://2.bp.blogspot.com/-fDlJxsYcy68/Tg4W9CqhTdI/AAAAAAAABf8/hppiYWRaYW8/s200/MVP_horizontal.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1482776199578137808-3901971865529412616?l=webservices20.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/MRFMKLAS6jXYM0NVMTMVX2qVp70/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MRFMKLAS6jXYM0NVMTMVX2qVp70/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/MRFMKLAS6jXYM0NVMTMVX2qVp70/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MRFMKLAS6jXYM0NVMTMVX2qVp70/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/WebServices20/~4/mO_Npi3jOGs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://webservices20.blogspot.com/feeds/3901971865529412616/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1482776199578137808&amp;postID=3901971865529412616" title="8 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1482776199578137808/posts/default/3901971865529412616?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1482776199578137808/posts/default/3901971865529412616?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/WebServices20/~3/mO_Npi3jOGs/im-mvp-again.html" title="I'm an MVP (again!)" /><author><name>Yaron Naveh (MVP)</name><uri>http://www.blogger.com/profile/11793800386245798442</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://2.bp.blogspot.com/_6DvmzgV-o20/TKczhOA8ODI/AAAAAAAABWI/y6trZ_YyLPU/S220/me_small.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-fDlJxsYcy68/Tg4W9CqhTdI/AAAAAAAABf8/hppiYWRaYW8/s72-c/MVP_horizontal.png" height="72" width="72" /><thr:total>8</thr:total><feedburner:origLink>http://webservices20.blogspot.com/2011/07/im-mvp-again.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkUNR3k-fip7ImA9WhZbE0k.&quot;"><id>tag:blogger.com,1999:blog-1482776199578137808.post-3588090195868574041</id><published>2011-06-18T01:03:00.001+03:00</published><updated>2011-06-18T01:04:56.756+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-18T01:04:56.756+03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Web Services Interoperability" /><category scheme="http://www.blogger.com/atom/ns#" term="BindingBox" /><title>Binding Box now supprots the Wcf Interop Bindings</title><content type="html">Earlier this week Microsoft had released the &lt;a href="http://webservices20.blogspot.com/2011/06/test-drive-shiny-new-wcf-interop.html"&gt;Wcf Interop Bindings and VS extension&lt;/a&gt;. You can download and try it from &lt;a href="http://wcf.codeplex.com/releases/view/68276"&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Today I am proud to announce that the &lt;a href="http://webservices20.cloudapp.net/"&gt;&lt;b&gt;Wcf Binding Box&lt;/b&gt;&lt;/a&gt; supports these interoperability bindings.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://webservices20.cloudapp.net/" imageanchor="1" style="margin-left:1em; margin-right:1em; border:0px"&gt;&lt;img border="0" height="55" width="300" src="http://1.bp.blogspot.com/_6DvmzgV-o20/SpHKyel4gII/AAAAAAAABFg/URwfjJiJQXg/s400/logo+-+small.PNG" style="border-width:0px" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;What is the Wcf Binding Box?&lt;/b&gt;&lt;br /&gt;
It is an online bindings converter. You give it a binding configuration (e.g. WSHttpBinding) and it returns an equivalent custom binding.&lt;br /&gt;
&lt;br /&gt;
Full explanation is &lt;a href="http://webservices20.blogspot.com/2009/08/bindingbox-convert-wcf-bindings.html"&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Why do we need it?&lt;/b&gt;&lt;br /&gt;
Because it's fun :) And also allows to take a working WSHttpBinding and further customize it with settings which it does not directly expose, for example MaxClockSkew.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;How the interop bindings relate to this?&lt;/b&gt;&lt;br /&gt;
Suppose you use the interop bindings to author a Wcf service which WebLogic consumes. You may want to further configure your Wcf service with settings that the WebLogicBinding does not expose. Since the WebLogicBinding internally inherits from WSHttpBinding this is a similar use case to the original purpose of the binding box.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Example&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Put this WebSphere binding as the input in the &lt;a href="http://webservices20.cloudapp.net/"&gt;binding box&lt;/a&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background-color: #eeeeee; padding-left: 10px; padding-right: 3px;"&gt;&amp;lt;bindings&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;      &amp;lt;webSphereBinding&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;        &amp;lt;binding name="interopBinding" messageEncoding="Text"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;          &amp;lt;security mode="MutualCertificate" establishSecurityContext="true" algorithmSuite="TripleDes" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;        &amp;lt;/binding&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;      &amp;lt;/webSphereBinding&amp;gt;&lt;br /&gt;
&amp;lt;/bindings&amp;gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
and this is the custom binding output:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background-color: #eeeeee; padding-left: 10px; padding-right: 3px;"&gt;&lt;br /&gt;
&amp;lt;customBinding&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;  &amp;lt;binding name="NewBinding0"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;    &amp;lt;transactionFlow transactionProtocol="WSAtomicTransaction11" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;    &amp;lt;security authenticationMode="SecureConversation" algorithmSuite="TripleDes" messageSecurityVersion="WSSecurity11WSTrust13WSSecureConversation13WSSecurityPolicy12BasicSecurityProfile10"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;      &amp;lt;secureConversationBootstrap authenticationMode="MutualCertificate" requireSignatureConfirmation="true" algorithmSuite="TripleDes" messageSecurityVersion="WSSecurity11WSTrust13WSSecureConversation13WSSecurityPolicy12BasicSecurityProfile10" requireDerivedKeys="false" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;    &amp;lt;/security&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;    &amp;lt;textMessageEncoding /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;    &amp;lt;httpTransport /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;  &amp;lt;/binding&amp;gt;&lt;br /&gt;
&amp;lt;/customBinding&amp;gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;b&gt;Check out the &lt;a href="http://webservices20.cloudapp.net/"&gt;binding box here&lt;/a&gt;.&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1482776199578137808-3588090195868574041?l=webservices20.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/tHXL_MVEyR3eXboW0wCfFiaLww4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tHXL_MVEyR3eXboW0wCfFiaLww4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/tHXL_MVEyR3eXboW0wCfFiaLww4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tHXL_MVEyR3eXboW0wCfFiaLww4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/WebServices20/~4/lMhAmsVEttI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://webservices20.blogspot.com/feeds/3588090195868574041/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1482776199578137808&amp;postID=3588090195868574041" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1482776199578137808/posts/default/3588090195868574041?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1482776199578137808/posts/default/3588090195868574041?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/WebServices20/~3/lMhAmsVEttI/binding-box-now-supprots-wcf-interop.html" title="Binding Box now supprots the Wcf Interop Bindings" /><author><name>Yaron Naveh (MVP)</name><uri>http://www.blogger.com/profile/11793800386245798442</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://2.bp.blogspot.com/_6DvmzgV-o20/TKczhOA8ODI/AAAAAAAABWI/y6trZ_YyLPU/S220/me_small.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_6DvmzgV-o20/SpHKyel4gII/AAAAAAAABFg/URwfjJiJQXg/s72-c/logo+-+small.PNG" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://webservices20.blogspot.com/2011/06/binding-box-now-supprots-wcf-interop.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUIFRnw_eyp7ImA9WhZbEEU.&quot;"><id>tag:blogger.com,1999:blog-1482776199578137808.post-1583602142054920247</id><published>2011-06-14T23:31:00.000+03:00</published><updated>2011-06-14T23:31:57.243+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-14T23:31:57.243+03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Web Services Interoperability" /><category scheme="http://www.blogger.com/atom/ns#" term="WSIT" /><category scheme="http://www.blogger.com/atom/ns#" term="WCF" /><title>Test drive the shiny new Wcf interop bindings</title><content type="html">&lt;a href="http://wcf.codeplex.com/"&gt;wcf.codeplex.com&lt;/a&gt; is the place where most of the wcf action happens at these days. If you have been following it recently you have seen a lot of activity around &lt;a href="http://wcf.codeplex.com/wikipage?title=WCF%20HTTP"&gt;Rest and Http&lt;/a&gt;. As of yesterday Soap officially joins the codepex party. Microsoft has just &lt;a href="http://blogs.msdn.com/b/appfabric/archive/2011/06/13/announcing-wcf-express-interop-bindings.aspx"&gt;released&lt;/a&gt; the &lt;a href="http://wcf.codeplex.com/releases/view/68276"&gt;WCF Express Interop Bindings&lt;/a&gt; - a new Visual Studio extension for Soap web services interoperability. &lt;b&gt;If you use Wcf this matters to you!&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;What did Microsoft release yesterday?&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Web services interoperability is always a pain. When security is involved it is usualy more then a casual 'oouch'. Yes, WsHttpBinding has a specific permutation of settings which can interoperate with Oracle web logic. And I know a lot of people who have tried to find that permutation in a brute force manner. Mostly doing this is a waste of time which we prefer to invest in more productive areas.&lt;br /&gt;
&lt;br /&gt;
So here's the idea behind yesterday's shipping: We now have a new binding, WebLogicBinding, which only allow us to configure settings which are interoperable with web logic. So all settings are interoperable! We also have bindings for web sphere, axis2 (wso2) and metro (wsit / glassfigh / tango).&lt;br /&gt;
In addition we got a nice wizard on top of Visual Studio's new project dialog which allows us to easily author interoperable services using these bindings.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-6p1U_Gz9KVA/Tfewn1DENNI/AAAAAAAABdE/430ZHoad6ac/s1600/platform.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="318" width="400" src="http://1.bp.blogspot.com/-6p1U_Gz9KVA/Tfewn1DENNI/AAAAAAAABdE/430ZHoad6ac/s400/platform.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;But don't we already have WS-Policy for interoperability?&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
WS-Policy helps clients to generate proxies which complies with the service requirements as expressed by the Wsdl. The express bindings solves a prior problem: How to write from the first place a service which a specific client platform can support? Once we write such a service its Wsdl will contain the WS-Policy pixy dust so that the client can auto-configure itself.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Nice... I'll take two!&lt;/b&gt;&lt;br /&gt;
You can take four: MetroBinding, WebSphereBinding, WebLogicBinding and Wso2InteropBinding.&lt;br /&gt;
Take them from &lt;a href="http://wcf.codeplex.com/releases/view/68276"&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;&lt;b&gt;&lt;div style="font-size:large"&gt;Tutorial - WCF and Metro interop&lt;/div&gt;&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
Let's see why web services interoperability just got a whole lot easier.&lt;br /&gt;
We'll create a WCF service with mutual x.509 certificates in the message level and consume it with a Metro client.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;1. Prepare the environment&lt;/b&gt;&lt;br /&gt;
You need VS 2010 and the &lt;a href="http://wcf.codeplex.com/releases/view/68276"&gt;express bindings&lt;/a&gt;. After you extract the bindings zip simply execute bin\Microsoft.ServiceModel.Interop.Extension.vsix  which will install it on VS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;2. Create a new service&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
In VS create a new project. Note how the Wcf node now contains a new project type "Express Interop Wcf Service Application":&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-8P1ntPKWQJI/Tfeykzvg1VI/AAAAAAAABdM/lj-iaNOk-Ew/s1600/project.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="259" width="400" src="http://1.bp.blogspot.com/-8P1ntPKWQJI/Tfeykzvg1VI/AAAAAAAABdM/lj-iaNOk-Ew/s400/project.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Choose that project type. &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;3. Configure the express binding wizard&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
A few moments after creating the project you will see the wizard.&lt;br /&gt;
First choose the platform our clients will use - Metro, this time.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-xpyYJsxsw2Y/TfezHhqt-_I/AAAAAAAABdU/PTshlWdD_Iw/s1600/platform.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="318" width="400" src="http://1.bp.blogspot.com/-xpyYJsxsw2Y/TfezHhqt-_I/AAAAAAAABdU/PTshlWdD_Iw/s400/platform.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Now we need to configure our security requirements. Choose "mutual certificate" which means both client and server will present an x.509 certificate in the message level. It also implies encryption and digital signature (in this case). To keep it simple we omit the secure conversation.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-VXU99K7urxU/TfezgD3L0NI/AAAAAAAABdc/YLYN_1z0APY/s1600/security.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="320" width="400" src="http://1.bp.blogspot.com/-VXU99K7urxU/TfezgD3L0NI/AAAAAAAABdc/YLYN_1z0APY/s400/security.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Next in the advanced settings use the Basic128 algorithm since it is the one Metro supports by default (for Basic256 a patch needs to be applied).&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-2jDTx1eKPQg/Tfez0S_-B1I/AAAAAAAABdk/bKee1F926t4/s1600/advanced.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="320" width="400" src="http://1.bp.blogspot.com/-2jDTx1eKPQg/Tfez0S_-B1I/AAAAAAAABdk/bKee1F926t4/s400/advanced.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Finally configure the certificate. &lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-C352IzjY4ag/TffA5b0r5SI/AAAAAAAABfU/g0eKF9eSn28/s1600/certificate.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="323" width="400" src="http://2.bp.blogspot.com/-C352IzjY4ag/TffA5b0r5SI/AAAAAAAABfU/g0eKF9eSn28/s400/certificate.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
I recommend to use this certificate (password: adminadmin):&lt;br /&gt;
&lt;br /&gt;
&lt;iframe title ="Preview" scrolling="no" marginheight="0" marginwidth="0" frameborder="0" style="width:98px;height:115px;padding:0;background-color:#fcfcfc;" src="http://cid-4999e5d00449874d.office.live.com/embedicon.aspx/.Public/xwssecurityserver.pfx"&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;br /&gt;
Now run the service. This is a web site project so it will open the documentation page with the Wsdl link. Make sure to have the Wsdl url handy since we will use it in a moment.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-gxcOb7MCoYc/Tfe0UCQiVWI/AAAAAAAABds/XXbYL1Zatg4/s1600/wsdl.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="349" width="400" src="http://4.bp.blogspot.com/-gxcOb7MCoYc/Tfe0UCQiVWI/AAAAAAAABds/XXbYL1Zatg4/s400/wsdl.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Now we want to configure Metro.&lt;br /&gt;
&lt;br /&gt;
1. Set up the environment&lt;br /&gt;
&lt;br /&gt;
You should have &lt;a href="http://netbeans.org/"&gt;NetBeans&lt;/a&gt; 7 (or higher), though NetBeans 6.7 also worked for me.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Create a new project of type Java Application:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-JbrqSoX9sG8/Tfe1lsAVbGI/AAAAAAAABd0/O9ok02iOn8c/s1600/netbeans%2Bproject.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="273" width="400" src="http://1.bp.blogspot.com/-JbrqSoX9sG8/Tfe1lsAVbGI/AAAAAAAABd0/O9ok02iOn8c/s400/netbeans%2Bproject.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Any of the default settings are fine:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-SUHwXAdKm-A/Tfe1uQeeH6I/AAAAAAAABd8/Pv7-7IRSquA/s1600/app%2Bdetails.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="275" width="400" src="http://1.bp.blogspot.com/-SUHwXAdKm-A/Tfe1uQeeH6I/AAAAAAAABd8/Pv7-7IRSquA/s400/app%2Bdetails.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
3. Right click the package in the project view and add a new "web service client":&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-MFLaTvjIAfo/Tfe2DxZqkwI/AAAAAAAABeE/Q6pg1-iRA3s/s1600/add%2Bws%2Bclient.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="326" width="400" src="http://3.bp.blogspot.com/-MFLaTvjIAfo/Tfe2DxZqkwI/AAAAAAAABeE/Q6pg1-iRA3s/s400/add%2Bws%2Bclient.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Now is a good time to paste that Wsdl url:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-jWeB5YEsFYs/Tfe2pZ9fcPI/AAAAAAAABeM/uaYT1LoAgYI/s1600/add%2Bws%2Bsettings.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="269" width="400" src="http://2.bp.blogspot.com/-jWeB5YEsFYs/Tfe2pZ9fcPI/AAAAAAAABeM/uaYT1LoAgYI/s400/add%2Bws%2Bsettings.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
4. The service reference is now in the project view so right click it and edit the Web Service Attributes (similar to the Wcf configuration... just very different :):&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-th9nggA2Gzc/Tfe3Piz1VII/AAAAAAAABeU/2td_dwTAsgM/s1600/ws%2Battributes.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="272" width="325" src="http://1.bp.blogspot.com/-th9nggA2Gzc/Tfe3Piz1VII/AAAAAAAABeU/2td_dwTAsgM/s400/ws%2Battributes.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
5. &lt;b&gt;This step is a workaround if your NetBeans version ships with Metro 2.0 (which is the case for NetBeans 7).&lt;/b&gt; See below how to know if you need it.&lt;br /&gt;
&lt;br /&gt;
 We can see that Metro had automatically identified that client and server certificates are required. This was due to the WS-Policy in the Wsdl. &lt;br /&gt;
&lt;br /&gt;
Before we continue we need to do some trick. NetBeans 7 ships with Metro 2.0 which has a bug with certificates. In favor of those who reach this post via a search engine this is the error message:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background-color: #eeeeee; padding-left: 10px; padding-right: 3px;"&gt;java.lang.NullPointerException &lt;br /&gt;
...&lt;br /&gt;
  at com.sun.xml.ws.security.impl.policy.CertificateRetriever.digestBST (CertificateRetriever.java:136) &lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
To solve this you need to download &lt;a href="http://metro.java.net/2.1/"&gt;Metro 2.1&lt;/a&gt; (or higher). For now just extract it to some folder.&lt;br /&gt;
&lt;br /&gt;
Now as part of this workaround check the "use development defaults" drop down in the quality attributes dialog you opened in step 4. Also approve any message you are prompt with.&lt;br /&gt;
&lt;br /&gt;
 &lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-AfKXs0qH3Yw/Tfe5AElgt7I/AAAAAAAABec/yD0V-OTo67c/s1600/dev%2Bdefaults.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="267" width="400" src="http://2.bp.blogspot.com/-AfKXs0qH3Yw/Tfe5AElgt7I/AAAAAAAABec/yD0V-OTo67c/s400/dev%2Bdefaults.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Click Ok to close the dialog. &lt;br /&gt;
&lt;br /&gt;
In the project pane expand the libraries node. It should look like this:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-8O1DB2JJdXw/Tfe6xfD8lVI/AAAAAAAABes/a00XKuwPVpY/s1600/metro20.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="366" width="375" src="http://3.bp.blogspot.com/-8O1DB2JJdXw/Tfe6xfD8lVI/AAAAAAAABes/a00XKuwPVpY/s400/metro20.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
This workaround applies to version 2. If you see another version (even smaller) no need for this. What you need to do is delete all the references to Metro jar files (don't delete the jdk though). Instead of them right click the "libraries" node, choose "add jar/folder..." and choose the jar files in metro\bin folder from the metro 2.1 zip you just extracted. Add all jar files in that folder. The libraries node will now look like this:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-A2Boh4IWzNI/Tfe7g3R3nAI/AAAAAAAABe0/3mmvnAnzp-4/s1600/metro21.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="269" width="322" src="http://4.bp.blogspot.com/-A2Boh4IWzNI/Tfe7g3R3nAI/AAAAAAAABe0/3mmvnAnzp-4/s400/metro21.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
6. We are now ready to do the actual configuration. Open again the web service quality attribute form as you did in step 4. Uncheck the "use development defaults" check box. Now configure the keystore and trust store. I recommend to use this java key store file:&lt;br /&gt;
&lt;br /&gt;
&lt;iframe title ="Preview" scrolling="no" marginheight="0" marginwidth="0" frameborder="0" style="width:98px;height:115px;padding:0;background-color:#fcfcfc;" src="http://cid-4999e5d00449874d.office.live.com/embedicon.aspx/.Public/certificates.zip"&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;br /&gt;
Open "keystore..." and "Truststore.." each in its turn and do the below.&lt;br /&gt;
Set the path to the .jks file you extracted form the certificates file above, set the password to "adminadmin", and click "load alias".  The alias for the key store is xws-security-client and for the trust store is xws-security-server.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/--4cUWJm5n5s/Tfe80-ID20I/AAAAAAAABfE/U1Wtu1X8YxY/s1600/trust.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="247" width="400" src="http://4.bp.blogspot.com/--4cUWJm5n5s/Tfe80-ID20I/AAAAAAAABfE/U1Wtu1X8YxY/s400/trust.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-hLCZ4oUNpg4/Tfe8v82vgxI/AAAAAAAABe8/eTnOE9u3eeg/s1600/keystore.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="185" width="400" src="http://4.bp.blogspot.com/-hLCZ4oUNpg4/Tfe8v82vgxI/AAAAAAAABe8/eTnOE9u3eeg/s400/keystore.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
7. Now we need to write the client code. &lt;br /&gt;
&lt;br /&gt;
Since most of my readers are .Net developers let's see if we can pull this one out without any Java coding at all.&lt;br /&gt;
&lt;br /&gt;
Drag the GetData node from the project pane to the main() method. It should now look like this (depending on the netbeans version):&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background-color: #eeeeee; padding-left: 10px; padding-right: 3px;"&gt;public static void main(String[] args) {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;        try { // Call Web Service Operation&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;            org.tempuri.Service service = new org.tempuri.Service();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;            org.tempuri.IService port = service.getMetroBindingIService();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;            // TODO initialize WS operation arguments here&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;            java.lang.Integer value = Integer.valueOf(0);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;            // TODO process result here&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;            java.lang.String result = port.getData(value);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;            System.out.println("Result = "+result);&lt;br /&gt;
&amp;nbsp;        } &lt;br /&gt;
&amp;nbsp;catch (Exception ex) {&lt;br /&gt;
 &lt;br /&gt;
      &amp;nbsp;  }&lt;br /&gt;
 &lt;br /&gt;
    }&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-bkVrMSYGE10/Tfe9JKhGBwI/AAAAAAAABfM/rkR6_1vU3nc/s1600/netbeans.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="217" width="400" src="http://4.bp.blogspot.com/-bkVrMSYGE10/Tfe9JKhGBwI/AAAAAAAABfM/rkR6_1vU3nc/s400/netbeans.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
if you use Netbeans 7 it will only generate a method so you would need to add code that calls it:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background-color: #eeeeee; padding-left: 10px; padding-right: 3px;"&gt;public static void main(String[] args) {&lt;br /&gt;
&amp;nbsp;        try&lt;br /&gt;
&amp;nbsp;        {                     &lt;br /&gt;
      &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;      String s = getData(2);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;            System.out.println("result is" + s);&lt;br /&gt;
&amp;nbsp;        } catch (Exception ex) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;            System.out.println(ex.getMessage() + ex.getStackTrace().toString());&lt;br /&gt;
&amp;nbsp;        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private static String getData(java.lang.Integer value) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;        org.tempuri.Service service = new org.tempuri.Service();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;        org.tempuri.IService port = service.getMetroBindingIService();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;        return port.getData(value);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
7. Now run the application (F6).&lt;br /&gt;
&lt;br /&gt;
Here is the output:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background-color: #eeeeee; padding-left: 10px; padding-right: 3px;"&gt;the result is: 2&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center; background-color: #ffffff;"&gt;&lt;img border="0" height="319" width="311" src="http://3.bp.blogspot.com/-635K1HM-l_w/TffDO8v6QQI/AAAAAAAABfk/H7cvPf26grg/s400/applause.jpg" style="border-width:0px" /&gt;&lt;/div&gt;&lt;br /&gt;
Web services interoperability was never easier!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1482776199578137808-1583602142054920247?l=webservices20.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ALjhhZNK_55-tIEqzQym8F-VamM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ALjhhZNK_55-tIEqzQym8F-VamM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ALjhhZNK_55-tIEqzQym8F-VamM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ALjhhZNK_55-tIEqzQym8F-VamM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/WebServices20/~4/5I-lwG4RyNA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://webservices20.blogspot.com/feeds/1583602142054920247/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1482776199578137808&amp;postID=1583602142054920247" title="27 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1482776199578137808/posts/default/1583602142054920247?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1482776199578137808/posts/default/1583602142054920247?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/WebServices20/~3/5I-lwG4RyNA/test-drive-shiny-new-wcf-interop.html" title="Test drive the shiny new Wcf interop bindings" /><author><name>Yaron Naveh (MVP)</name><uri>http://www.blogger.com/profile/11793800386245798442</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://2.bp.blogspot.com/_6DvmzgV-o20/TKczhOA8ODI/AAAAAAAABWI/y6trZ_YyLPU/S220/me_small.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-6p1U_Gz9KVA/Tfewn1DENNI/AAAAAAAABdE/430ZHoad6ac/s72-c/platform.jpg" height="72" width="72" /><thr:total>27</thr:total><feedburner:origLink>http://webservices20.blogspot.com/2011/06/test-drive-shiny-new-wcf-interop.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkUHR3w7cCp7ImA9WhZXGEU.&quot;"><id>tag:blogger.com,1999:blog-1482776199578137808.post-2317092035264399280</id><published>2011-05-08T17:44:00.000+03:00</published><updated>2011-05-08T22:50:36.208+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-08T22:50:36.208+03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Web Services Interoperability" /><category scheme="http://www.blogger.com/atom/ns#" term="X.509" /><title>Cannot resolve KeyInfo for unwrapping key</title><content type="html">With web services sometimes your client is able to receive a good response from the server but your client will still throw exception due to some policy violation. With wcf / mutual authentication the following error can appear:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background-color: #eeeeee; padding-left: 10px; padding-right: 3px;"&gt;&lt;br /&gt;
Cannot resolve KeyInfo for unwrapping key: KeyInfo 'SecurityKeyIdentifier&lt;br /&gt;
(&lt;br /&gt;
IsReadOnly = False,&lt;br /&gt;
Count = 1,&lt;br /&gt;
Clause[0] = X509IssuerSerialKeyIdentifierClause(Issuer = 'CN=MyCert', Serial = '-903515464456238801534567116928')&lt;br /&gt;
)&lt;br /&gt;
', available tokens 'SecurityTokenResolver&lt;br /&gt;
(&lt;br /&gt;
TokenCount = 0,&lt;br /&gt;
)&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
This error usually means that the server had digitally signed its response using an unexpected certificate. The expected certificate is the one which the client has configured as the server certificate and have possibly used to encrypt the message with.&lt;br /&gt;
&lt;br /&gt;
So as with many of the security interoperability problems, you should verify that you use the correct certificate on both sides of the wire.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1482776199578137808-2317092035264399280?l=webservices20.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/uci-vG2Iv81CggmPBofBpsWySbA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/uci-vG2Iv81CggmPBofBpsWySbA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/uci-vG2Iv81CggmPBofBpsWySbA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/uci-vG2Iv81CggmPBofBpsWySbA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/WebServices20/~4/vaBGT00H0Ao" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://webservices20.blogspot.com/feeds/2317092035264399280/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1482776199578137808&amp;postID=2317092035264399280" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1482776199578137808/posts/default/2317092035264399280?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1482776199578137808/posts/default/2317092035264399280?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/WebServices20/~3/vaBGT00H0Ao/cannot-resolve-keyinfo-for-unwrapping.html" title="Cannot resolve KeyInfo for unwrapping key" /><author><name>Yaron Naveh (MVP)</name><uri>http://www.blogger.com/profile/11793800386245798442</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://2.bp.blogspot.com/_6DvmzgV-o20/TKczhOA8ODI/AAAAAAAABWI/y6trZ_YyLPU/S220/me_small.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://webservices20.blogspot.com/2011/05/cannot-resolve-keyinfo-for-unwrapping.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkAGRXY5eSp7ImA9WhdRGEk.&quot;"><id>tag:blogger.com,1999:blog-1482776199578137808.post-5888651375322452044</id><published>2011-05-08T00:56:00.001+03:00</published><updated>2011-08-09T02:05:24.821+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-09T02:05:24.821+03:00</app:edited><title>Anyone else having problems with Google Calendar?</title><content type="html">&lt;b&gt;Update (july 11): Fixed!&lt;/b&gt;
&lt;br  /&gt;&lt;br  /&gt;

I'll start by saying that &lt;a href="http://draft.blogger.com/www.google.com/calendar"&gt;google calendar&lt;/a&gt; is a great product which I was happy to use for quite a while. Not any more, it seams. For some reason I intermittently don't get email notifications about scheduled events. I have first noticed that over a year ago and assumed it is a one off glitch. I have then noticed it in many more occasions and since last week I don't get notifications at all.&lt;br /&gt;
&lt;br /&gt;
I mainly use gcal as a "send myself a future email reminder" application. While it does not contain any important appointments, I do have there information about birthdays, random arrangements, sites without rss which I periodically visit etc. And while managing to live without these unsent reminders makes me wonder if I had ever needed them anyway, it is still annoying.&lt;br /&gt;
&lt;br /&gt;
This issue appears in several gcal  &lt;a href="http://www.google.com/support/forum/p/Calendar/thread?tid=5f8b821e94687f07&amp;amp;hl=en"&gt;forum&lt;/a&gt; &lt;a href="http://www.google.com/support/forum/p/Calendar/thread?tid=3192687cb0f4cc40&amp;amp;hl=en"&gt;threads&lt;/a&gt;, has a special &lt;a href="http://www.google.com/support/calendar/bin/answer.py?hl=en&amp;amp;answer=36589"&gt;troubleshooting&lt;/a&gt; page, and is actually a &lt;a href="http://www.google.com/support/calendar/bin/static.py?page=known_issues.cs"&gt;known issue&lt;/a&gt;. The last link says "We're currently investigating reports from users who indicate that they're not receiving email notifications for their events". How many users? What is the current status?&lt;br /&gt;
&lt;br /&gt;
Just out of curiosity - does anyone else experience missing email notifications from google calendar?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1482776199578137808-5888651375322452044?l=webservices20.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/OFGr1735bOLAtlJk3WvDmmDjISs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OFGr1735bOLAtlJk3WvDmmDjISs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/OFGr1735bOLAtlJk3WvDmmDjISs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OFGr1735bOLAtlJk3WvDmmDjISs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/WebServices20/~4/qns1G9x1WMY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://webservices20.blogspot.com/feeds/5888651375322452044/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1482776199578137808&amp;postID=5888651375322452044" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1482776199578137808/posts/default/5888651375322452044?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1482776199578137808/posts/default/5888651375322452044?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/WebServices20/~3/qns1G9x1WMY/anyone-else-having-problems-with-google.html" title="Anyone else having problems with Google Calendar?" /><author><name>Yaron Naveh (MVP)</name><uri>http://www.blogger.com/profile/11793800386245798442</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://2.bp.blogspot.com/_6DvmzgV-o20/TKczhOA8ODI/AAAAAAAABWI/y6trZ_YyLPU/S220/me_small.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://webservices20.blogspot.com/2011/05/anyone-else-having-problems-with-google.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak4MSHk6fyp7ImA9WhZXF00.&quot;"><id>tag:blogger.com,1999:blog-1482776199578137808.post-7155304586258470441</id><published>2011-05-06T22:09:00.000+03:00</published><updated>2011-05-06T22:09:49.717+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-06T22:09:49.717+03:00</app:edited><title>Wcf with WS-Addressing March 2004</title><content type="html">&lt;p&gt;Wcf supports two WS-Addressing versions – the August 2004 draft and the actual standard v 1.0. There is another wsa version which is used by some soap stacks (who said wse 2?) – the march 2004 draft. To turn this fact to a more practical&amp;#160; problem, you might need to write a wcf client to a (non Wcf) service which expects a request like this:&lt;/p&gt;&lt;div style="padding-right: 3px; padding-left: 10px; background-color: #eeeeee"&gt;&lt;div class="code"&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;Envelope&lt;/font&gt;&lt;font color="#ff0000"&gt; xmlns&lt;/font&gt;&lt;font color="#0000ff"&gt;=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot;&lt;/font&gt;&lt;font color="#ff0000"&gt; xmlns:wsa&lt;/font&gt;&lt;font color="#0000ff"&gt;=&amp;quot;&lt;strong&gt;http://schemas.xmlsoap.org/ws/2004/03/addressing&lt;/strong&gt;&amp;quot;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;        &lt;br /&gt;
&lt;br /&gt;
&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;Header&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;        &lt;br /&gt;
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;wsa:Action&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;http://myAction&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000"&gt;wsa:Action&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;wsa:MessageID&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;uuid:5024616c-d0r2-56h3-bjj7-ab10p89eee63&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000"&gt;wsa:MessageID&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;wsa:ReplyTo&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;wsa:Address&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000"&gt;wsa:Address&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000"&gt;wsa:ReplyTo&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;wsa:To&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;http://server/Calc&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000"&gt;wsa:To&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;        &lt;br /&gt;
...         &lt;br /&gt;
&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
(note the bold wsa version – wcf cannot emit it).&lt;br /&gt;
&lt;br /&gt;
One straight forward way to do this with wcf is to push these headers to the soap using a message inspector. But what if you also need to sign the wsa headers with a digital signature?&lt;/p&gt;In this case you need to write a custom behavior which push the wsa headers to the IncomingSignatureParts property. The whole code looks like this:&lt;br /&gt;
&amp;#160;&lt;/p&gt;&lt;div style="padding-right: 3px; padding-left: 10px; background-color: #eeeeee"&gt;&lt;div class="code"&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;System&lt;/font&gt;&lt;font color="#0000ff"&gt;;&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&lt;/font&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;System.Collections.Generic&lt;/font&gt;&lt;font color="#0000ff"&gt;;&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&lt;/font&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;System.Linq&lt;/font&gt;&lt;font color="#0000ff"&gt;;&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&lt;/font&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;System.Runtime.Serialization&lt;/font&gt;&lt;font color="#0000ff"&gt;;&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&lt;/font&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;System.ServiceModel&lt;/font&gt;&lt;font color="#0000ff"&gt;;&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&lt;/font&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;System.ServiceModel.Channels&lt;/font&gt;&lt;font color="#0000ff"&gt;;&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&lt;/font&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;System.ServiceModel.Description&lt;/font&gt;&lt;font color="#0000ff"&gt;;&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&lt;/font&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;System.ServiceModel.Dispatcher&lt;/font&gt;&lt;font color="#0000ff"&gt;;&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&lt;/font&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;System.ServiceModel.Security&lt;/font&gt;&lt;font color="#0000ff"&gt;;&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&lt;/font&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;System.Text&lt;/font&gt;&lt;font color="#0000ff"&gt;;&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&lt;/font&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;System.Xml&lt;/font&gt;&lt;font color="#0000ff"&gt;;&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&lt;/font&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;System.Xml.Linq&lt;/font&gt;&lt;font color="#0000ff"&gt;;&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&lt;/font&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;MyApplication.ServiceReference1&lt;/font&gt;&lt;font color="#0000ff"&gt;;&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&lt;br /&gt;
&lt;/font&gt;&lt;font color="#0000ff"&gt;namespace&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;MyApplication&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;class&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;SignMessageHeaderBehavior&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;:&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#2b91af"&gt;Attribute&lt;/font&gt;&lt;font color="#000000"&gt;,&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;IEndpointBehavior&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;action&lt;/font&gt;&lt;font color="#0000ff"&gt;;&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#2b91af"&gt;List&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;XmlQualifiedName&amp;gt;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;headers&lt;/font&gt;&lt;font color="#0000ff"&gt;;&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;SignMessageHeaderBehavior(&lt;/font&gt;&lt;font color="#2b91af"&gt;List&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;XmlQualifiedName&amp;gt;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;headers,&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;action)&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;this&lt;/font&gt;&lt;font color="#000000"&gt;.headers&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;headers&lt;/font&gt;&lt;font color="#0000ff"&gt;;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;this&lt;/font&gt;&lt;font color="#000000"&gt;.action&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;action&lt;/font&gt;&lt;font color="#0000ff"&gt;;&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;void&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;Validate(ServiceEndpoint&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;endpoint)&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;void&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;AddBindingParameters(ServiceEndpoint&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;endpoint,&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;BindingParameterCollection&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;bindingParameters)&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;requirements&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;bindingParameters.Find&amp;lt;ChannelProtectionRequirements&amp;gt;()&lt;/font&gt;&lt;font color="#0000ff"&gt;;&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;foreach&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;h&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;in&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;headers)&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;part&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;MessagePartSpecification(h)&lt;/font&gt;&lt;font color="#0000ff"&gt;;&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;requirements.IncomingSignatureParts.AddParts(part,&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;action)&lt;/font&gt;&lt;font color="#0000ff"&gt;;&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;void&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;ApplyDispatchBehavior(ServiceEndpoint&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;endpoint,&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;EndpointDispatcher&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;endpointDispatcher)&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;void&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;ApplyClientBehavior(ServiceEndpoint&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;endpoint,&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;ClientRuntime&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;clientRuntime)&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;clientRuntime.MessageInspectors.Add(&lt;/font&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;AddHeaderMessageInspector())&lt;/font&gt;&lt;font color="#0000ff"&gt;;&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;[DataContract(Namespace&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;http://schemas.xmlsoap.org/ws/2004/03/addressing&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;)]&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;class&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;ReplyToHeader&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;[DataMember]&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;Address&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;get;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;set;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;class&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;AddHeaderMessageInspector&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;:&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;IClientMessageInspector&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;object&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;BeforeSendRequest(&lt;/font&gt;&lt;font color="#0000ff"&gt;ref&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;Message&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;request,&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;IClientChannel&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;channel)&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;request.Headers.Add(MessageHeader.CreateHeader(&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;Action&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;,&lt;/font&gt;&lt;font color="#808080"&gt; &amp;quot;http://schemas.xmlsoap.org/ws/2004/03/addressing&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;,&lt;/font&gt;&lt;font color="#808080"&gt; &amp;quot;http://myAction&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;))&lt;/font&gt;&lt;font color="#0000ff"&gt;;&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;request.Headers.Add(MessageHeader.CreateHeader(&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;MessageID&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;,&lt;/font&gt;&lt;font color="#808080"&gt; &amp;quot;http://schemas.xmlsoap.org/ws/2004/03/addressing&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;,&lt;/font&gt;&lt;font color="#808080"&gt; &amp;quot;uuid:5024616c-d0r2-56h3-bjj7-ab10p89eee63&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;))&lt;/font&gt;&lt;font color="#0000ff"&gt;;&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;request.Headers.Add(MessageHeader.CreateHeader(&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;ReplyTo&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;,&lt;/font&gt;&lt;font color="#808080"&gt; &amp;quot;http://schemas.xmlsoap.org/ws/2004/03/addressing&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;,&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;ReplyToHeader()&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;Address&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#808080"&gt; &amp;quot;http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous&amp;quot; &lt;/font&gt;&lt;font color="#000000"&gt;}))&lt;/font&gt;&lt;font color="#0000ff"&gt;;&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;request.Headers.Add(MessageHeader.CreateHeader(&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;To&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;,&lt;/font&gt;&lt;font color="#808080"&gt; &amp;quot;http://schemas.xmlsoap.org/ws/2004/03/addressing&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;,&lt;/font&gt;&lt;font color="#808080"&gt; &amp;quot;http://server/Calc&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;))&lt;/font&gt;&lt;font color="#0000ff"&gt;;&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;return&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;request&lt;/font&gt;&lt;font color="#0000ff"&gt;;&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;void&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;AfterReceiveReply(&lt;/font&gt;&lt;font color="#0000ff"&gt;ref&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;Message&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;reply,&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;object&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;correlationState)&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;class&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;Program&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;static&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;void&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;Main(&lt;/font&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;font color="#000000"&gt;[]&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;args)&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;c&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;SimpleServiceSoapClient()&lt;/font&gt;&lt;font color="#0000ff"&gt;;&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;headers&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#2b91af"&gt;List&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;XmlQualifiedName&amp;gt;()&lt;/font&gt;&lt;font color="#0000ff"&gt;;&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;headers.Add(&lt;/font&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;XmlQualifiedName(&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;Action&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;,&lt;/font&gt;&lt;font color="#808080"&gt; &amp;quot;http://schemas.xmlsoap.org/ws/2004/03/addressing&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;))&lt;/font&gt;&lt;font color="#0000ff"&gt;;&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;headers.Add(&lt;/font&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;XmlQualifiedName(&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;MessageID&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;,&lt;/font&gt;&lt;font color="#808080"&gt; &amp;quot;http://schemas.xmlsoap.org/ws/2004/03/addressing&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;))&lt;/font&gt;&lt;font color="#0000ff"&gt;;&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;headers.Add(&lt;/font&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;XmlQualifiedName(&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;ReplyTo&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;,&lt;/font&gt;&lt;font color="#808080"&gt; &amp;quot;http://schemas.xmlsoap.org/ws/2004/03/addressing&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;))&lt;/font&gt;&lt;font color="#0000ff"&gt;;&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;headers.Add(&lt;/font&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;XmlQualifiedName(&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;To&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;,&lt;/font&gt;&lt;font color="#808080"&gt; &amp;quot;http://schemas.xmlsoap.org/ws/2004/03/addressing&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;))&lt;/font&gt;&lt;font color="#0000ff"&gt;;&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;c.Endpoint.Behaviors.Add(&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;SignMessageHeaderBehavior(headers,&lt;/font&gt;&lt;font color="#808080"&gt; &amp;quot;http://tempuri.org/EchoString&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;))&lt;/font&gt;&lt;font color="#0000ff"&gt;;&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;c.EchoString(&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;123&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#0000ff"&gt;;&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&lt;br /&gt;
&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1482776199578137808-7155304586258470441?l=webservices20.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/go-4c09DWtUmuZ4YT0L2ZEmN5h8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/go-4c09DWtUmuZ4YT0L2ZEmN5h8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/go-4c09DWtUmuZ4YT0L2ZEmN5h8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/go-4c09DWtUmuZ4YT0L2ZEmN5h8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/WebServices20/~4/qen8IcmH0BQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://webservices20.blogspot.com/feeds/7155304586258470441/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1482776199578137808&amp;postID=7155304586258470441" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1482776199578137808/posts/default/7155304586258470441?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1482776199578137808/posts/default/7155304586258470441?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/WebServices20/~3/qen8IcmH0BQ/wcf-with-ws-addressing-march-2004.html" title="Wcf with WS-Addressing March 2004" /><author><name>Yaron Naveh (MVP)</name><uri>http://www.blogger.com/profile/11793800386245798442</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://2.bp.blogspot.com/_6DvmzgV-o20/TKczhOA8ODI/AAAAAAAABWI/y6trZ_YyLPU/S220/me_small.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://webservices20.blogspot.com/2011/05/wcf-with-ws-addressing-march-2004.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0MGRXw_eSp7ImA9WhZQFUQ.&quot;"><id>tag:blogger.com,1999:blog-1482776199578137808.post-8566630159677163028</id><published>2011-04-23T13:57:00.001+03:00</published><updated>2011-04-24T01:57:04.241+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-24T01:57:04.241+03:00</app:edited><title>svcutil.exe with a wsdl on the local disk</title><content type="html">&lt;a href="http://msdn.microsoft.com/en-us/library/aa347733.aspx"&gt;svcutil.exe&lt;/a&gt; is a command line to generate wcf proxies from wsdl files (and more).&lt;br /&gt;
&lt;br /&gt;
for example the following command:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background-color: #eeeeee; padding-left: 10px; padding-right: 3px;"&gt;$&gt; svcutil http://localhost/MyServices/Service.svc?WSDL&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
will generate Service.cs which is the proxy you can add to your project.&lt;br /&gt;
&lt;br /&gt;
Sometimes the wsdl file is not on a url but on the local disk. In theory this should work:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background-color: #eeeeee; padding-left: 10px; padding-right: 3px;"&gt;$&gt; svcutil c:\services\calc.wsdl&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
In practice this would work only if the wsdl does not reference other wsdl or xsd files (even if their relative reference is correct). The same would work with "add service reference" in VS so not sure why it fails here. One solution is to explicitly specify all the referenced schema files in the command:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background-color: #eeeeee; padding-left: 10px; padding-right: 3px;"&gt;$&gt; svcutil" c:\services\calc.wsdl" "c:\person.xsd c:\units.xsd"&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
This usually works but requires manual work and is not always desired when a large number of references is used.&lt;br /&gt;
&lt;br /&gt;
An alternative would be to upload the wsdl and the references to a web server and svcutil from there. If you have iis on your dev machine this is actually pretty simple:&lt;br /&gt;
&lt;br /&gt;
1. copy the wsdl root folder to a subfolder under c:\inetpub\wwwroot&lt;br /&gt;
2. run&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background-color: #eeeeee; padding-left: 10px; padding-right: 3px;"&gt;$&gt; svcutil http://localhost/root/calc.wsdl&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
That's all, no need to specify all files. svcutil works well from url locations. Do not forget to remove the wsdl folder after so your iis folder would stay clean.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1482776199578137808-8566630159677163028?l=webservices20.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/r1qysJv8hbVi460XaYHPHnaPiZ8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/r1qysJv8hbVi460XaYHPHnaPiZ8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/r1qysJv8hbVi460XaYHPHnaPiZ8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/r1qysJv8hbVi460XaYHPHnaPiZ8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/WebServices20/~4/CTvuDLRzzZA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://webservices20.blogspot.com/feeds/8566630159677163028/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1482776199578137808&amp;postID=8566630159677163028" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1482776199578137808/posts/default/8566630159677163028?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1482776199578137808/posts/default/8566630159677163028?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/WebServices20/~3/CTvuDLRzzZA/svcutilexe-with-wsdl-on-local-disk.html" title="svcutil.exe with a wsdl on the local disk" /><author><name>Yaron Naveh (MVP)</name><uri>http://www.blogger.com/profile/11793800386245798442</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://2.bp.blogspot.com/_6DvmzgV-o20/TKczhOA8ODI/AAAAAAAABWI/y6trZ_YyLPU/S220/me_small.jpg" /></author><thr:total>5</thr:total><feedburner:origLink>http://webservices20.blogspot.com/2011/04/svcutilexe-with-wsdl-on-local-disk.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0YNRngyfCp7ImA9WhZQFU0.&quot;"><id>tag:blogger.com,1999:blog-1482776199578137808.post-1272997824112368740</id><published>2011-04-22T22:32:00.001+03:00</published><updated>2011-04-22T22:39:57.694+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-22T22:39:57.694+03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="blogging" /><title>...and, we're back!</title><content type="html">This post violates at least 4 of the &lt;a href="http://www.codinghorror.com/blog/2007/08/thirteen-blog-cliches.html"&gt;blogging cliches&lt;/a&gt;. Read at your own risk!&lt;br /&gt;
&lt;br /&gt;
You might have noticed I've disappeared for a while. The reason is that I have been practically leaving on an airplane in the last two months beeing over 80 hours in flights.&lt;br /&gt;
&lt;br /&gt;
In early march I have visited Redmond for the MVP global summit. I've met people which so far I've only seen in the cover of &lt;a href="http://www.amazon.com/Vittorio-Bertocci/e/B001JSFAPC/ref=sr_ntt_srch_lnk_6?qid=1303498816&amp;sr=1-6"&gt;their books&lt;/a&gt;. I've met some of my &lt;a href="http://weblogs.asp.net/cibrax/"&gt;favorite bloggers&lt;/a&gt; and readers. And even though I'm a Connected Systems MVP I took a picture with the Biztalk MVP's (thanks to &lt;a href="http://geekswithblogs.net/leonidganeline/Default.aspx"&gt;leonid&lt;/a&gt; who took the photo):&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-YIB5pDXYoWA/TbHToEJNOwI/AAAAAAAABbs/M6c21K3Bd9I/s1600/biztalk.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="233" width="400" src="http://1.bp.blogspot.com/-YIB5pDXYoWA/TbHToEJNOwI/AAAAAAAABbs/M6c21K3Bd9I/s400/biztalk.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
I have then visited customers in many states in the US. I never regretted for taking that extra coat and clothes because some places were damn cold! Still I had a lot of fun, met some super smart people, and also had time to visit beautiful places:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-RQz1ZY7IFDg/TbHTvq1CNuI/AAAAAAAABb0/pUWKmFKO1pI/s1600/maine_tower.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="300" width="400" src="http://4.bp.blogspot.com/-RQz1ZY7IFDg/TbHTvq1CNuI/AAAAAAAABb0/pUWKmFKO1pI/s400/maine_tower.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-K5oPmzmB7iY/TbHTvlA7DJI/AAAAAAAABb8/qxrXR2Bnehg/s1600/maine_forest.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="300" width="400" src="http://1.bp.blogspot.com/-K5oPmzmB7iY/TbHTvlA7DJI/AAAAAAAABb8/qxrXR2Bnehg/s400/maine_forest.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Shortly after I came back home I got my 5th star in the &lt;a href="http://social.msdn.microsoft.com/forums/en-US/wcf/threads/"&gt;MSDN forums&lt;/a&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-lG6MqXElmio/TbHZTtOpAxI/AAAAAAAABcc/Gi15cvzyMS8/s1600/forum1.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="134" width="400" src="http://3.bp.blogspot.com/-lG6MqXElmio/TbHZTtOpAxI/AAAAAAAABcc/Gi15cvzyMS8/s400/forum1.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
I'm very proud for being able to help so many people. I am going to continue and participate in these forums not only because I love to help but also since I learn a lot on the way.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1482776199578137808-1272997824112368740?l=webservices20.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/M6zkkNrcCdFHLo6YEwU16I_dahc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/M6zkkNrcCdFHLo6YEwU16I_dahc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/M6zkkNrcCdFHLo6YEwU16I_dahc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/M6zkkNrcCdFHLo6YEwU16I_dahc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/WebServices20/~4/j1TbFftNegw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://webservices20.blogspot.com/feeds/1272997824112368740/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1482776199578137808&amp;postID=1272997824112368740" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1482776199578137808/posts/default/1272997824112368740?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1482776199578137808/posts/default/1272997824112368740?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/WebServices20/~3/j1TbFftNegw/and-were-back.html" title="...and, we're back!" /><author><name>Yaron Naveh (MVP)</name><uri>http://www.blogger.com/profile/11793800386245798442</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://2.bp.blogspot.com/_6DvmzgV-o20/TKczhOA8ODI/AAAAAAAABWI/y6trZ_YyLPU/S220/me_small.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-YIB5pDXYoWA/TbHToEJNOwI/AAAAAAAABbs/M6c21K3Bd9I/s72-c/biztalk.jpg" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://webservices20.blogspot.com/2011/04/and-were-back.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0YFQnczeip7ImA9Wx9bFk4.&quot;"><id>tag:blogger.com,1999:blog-1482776199578137808.post-4148799028609395875</id><published>2011-02-25T13:58:00.000+02:00</published><updated>2011-02-25T13:58:33.982+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-25T13:58:33.982+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Azure" /><title>More lessons learned on Windows Azure pricing</title><content type="html">My &lt;a href="http://webservices20.blogspot.com/2011/02/bart-simpsons-guide-to-windows-azure.html"&gt;Bart Simpson's guide to windows Azure&lt;/a&gt; has been highly successful. From &lt;a href="http://twitter.com/#search?q=bart%20simpson%20guide%20azure"&gt;Twitter&lt;/a&gt; to the &lt;a href="http://www.blogger.com/comment.g?blogID=1482776199578137808&amp;postID=801441008259024895"&gt;post comments&lt;/a&gt; to &lt;a href="mailto:yaronn01@gmail.com"&gt;my mail box&lt;/a&gt; I got a lot of good feedback.&lt;br /&gt;
&lt;br /&gt;
Here are some insights you might want to know:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Extra small instances might not be included in your free Azure account.&lt;/b&gt;&lt;br /&gt;
&lt;a href="http://davidpallmann.blogspot.com/"&gt;David Pallmann&lt;/a&gt; was the first to notice that some of the special Azure offers (like the &lt;a href="http://www.microsoft.com/windowsazure/offers/popup/popup.aspx?lang=en&amp;locale=he-il&amp;offer=MS-AZR-0005P"&gt;MSDN&lt;/a&gt; one) actually have some small letters:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background-color: #eeeeee; padding-left: 10px; padding-right: 3px;"&gt;**Extra small compute instances are available in beta and are billed separately from other compute instance sizes.&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
This practically means you pay for these instances from day 1! Here is my account:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-U0My5zWE7w0/TWeXqaDROHI/AAAAAAAABbQ/EEnt3VSFMec/s1600/xsmall.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="104" width="400" src="http://4.bp.blogspot.com/-U0My5zWE7w0/TWeXqaDROHI/AAAAAAAABbQ/EEnt3VSFMec/s400/xsmall.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
So you should check your account details and determine if extra small instances work for you.&lt;br /&gt;
&lt;br /&gt;
I also recommend you check out David's &lt;a href="http://davidpallmann.blogspot.com/2010/08/hidden-costs-in-cloud-part-1-driving.html"&gt;Hidden Costs in the Cloud&lt;/a&gt; series which has some important insights.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Hot news: Azure trial with extra small instances&lt;/b&gt;&lt;br /&gt;
A few days ago Microsoft has started to offer an introductory offer which includes 750 free monthly hours of x-small instances (until June). &lt;a href="http://blogs.msdn.com/b/windowsazure/archive/2011/02/22/announcing-new-windows-azure-platform-introductory-special-includes-750-free-hours-of-windows-azure-extra-small-instance-and-more.aspx"&gt;Check it out&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Also thanks to &lt;a href="http://www.blogger.com/profile/05166122279770270194"&gt;David Makogon&lt;/a&gt; I've fixed an error in the config sample to configure extra small instances.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1482776199578137808-4148799028609395875?l=webservices20.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/2y0zNkBmOlPSMO7zodrWdhKGb2g/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2y0zNkBmOlPSMO7zodrWdhKGb2g/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/2y0zNkBmOlPSMO7zodrWdhKGb2g/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2y0zNkBmOlPSMO7zodrWdhKGb2g/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/WebServices20/~4/c8ciJtRxVWU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://webservices20.blogspot.com/feeds/4148799028609395875/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1482776199578137808&amp;postID=4148799028609395875" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1482776199578137808/posts/default/4148799028609395875?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1482776199578137808/posts/default/4148799028609395875?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/WebServices20/~3/c8ciJtRxVWU/more-lessons-learned-on-windows-azure.html" title="More lessons learned on Windows Azure pricing" /><author><name>Yaron Naveh (MVP)</name><uri>http://www.blogger.com/profile/11793800386245798442</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://2.bp.blogspot.com/_6DvmzgV-o20/TKczhOA8ODI/AAAAAAAABWI/y6trZ_YyLPU/S220/me_small.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-U0My5zWE7w0/TWeXqaDROHI/AAAAAAAABbQ/EEnt3VSFMec/s72-c/xsmall.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://webservices20.blogspot.com/2011/02/more-lessons-learned-on-windows-azure.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0MASHc_fyp7ImA9Wx9bFE0.&quot;"><id>tag:blogger.com,1999:blog-1482776199578137808.post-801441008259024895</id><published>2011-02-19T15:17:00.002+02:00</published><updated>2011-02-22T23:17:29.947+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-22T23:17:29.947+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Azure" /><title>Bart Simpson's guide to Windows Azure</title><content type="html">The original name of this post was "a poor developer's guide to windows azure" but then I found the &lt;a href="http://www.addletters.com/pictures/bart-simpson-generator/759648.htm"&gt;Bart Simpson's Chalkboard Generator&lt;/a&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-riYODsfFs6U/TV-pHhon4CI/AAAAAAAABaA/KFO-OAbYqjU/s1600/bart1.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0"  height="321" width="600" src="http://3.bp.blogspot.com/-riYODsfFs6U/TV-pHhon4CI/AAAAAAAABaA/KFO-OAbYqjU/s1600/bart1.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
My Azure story begins back in PDC08 where Microsoft announced a community preview of Windows Azure which includes a free subscription for a limited period. I took advantage of this to develop the &lt;a href="http://webservices20.cloudapp.net/"&gt;Wcf binding box&lt;/a&gt; (which btw got some &lt;a href="http://sgomez.blogspot.com/2010/01/moving-from-basichttpbinding-to.html"&gt;good&lt;/a&gt; &lt;a href="http://blog.aggregatedintelligence.com/2010/06/wcf-tool-convert-binding-to-custom.html"&gt;reviews&lt;/a&gt;). A few months after, the preview has ended and my account became read only. I was not too bothered by it as I had &lt;a href="http://webservices20.blogspot.com/2010/11/wsihero-gui-utility-for-web-services.html"&gt;other&lt;/a&gt; &lt;a href="http://webservices20.blogspot.com/2009/06/wcf-self-hosting-project-template.html"&gt;things&lt;/a&gt; &lt;a href="http://webservices20.blogspot.com/2010/07/im-microsoft-mvp.html"&gt;in mind&lt;/a&gt;. A few weeks ago I had a crazy idea to build a &lt;a href="http://webservices20.blogspot.com/2011/02/wsdl2wsdl-convert-wsdl-20-to-wsdl-11.html"&gt;wsdl2--&gt;wsdl1&lt;/a&gt; converter. The most natural way to do it was to create an online service. But my azure trial is already in freeze, and I did not want to pay a hosting service just to host a free contribution I make for the community. What could I do? I then remembered &lt;a href="http://webservices20.blogspot.com/2010/09/free-msdn-ultimate-subscriptions-vs.html"&gt;that I&lt;/a&gt; (and my contest &lt;a href="http://webservices20.blogspot.com/2010/10/and-winners-are.html"&gt;winners&lt;/a&gt;) have a special &lt;a href="http://www.microsoft.com/windowsazure/offers/popup/popup.aspx?lang=en&amp;locale=he-il&amp;offer=MS-AZR-0005P"&gt;MSDN premium Azure offer&lt;/a&gt;. And this is how &lt;a href="http://webservices20.blogspot.com/2011/02/wsdl2wsdl-convert-wsdl-20-to-wsdl-11.html"&gt;wsdl2wsdl&lt;/a&gt; came to life. Veni, vidi, vici? Oh my...&lt;br /&gt;
&lt;br /&gt;
A few days after going on air I get this email from Microsoft:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background-color: #eeeeee; padding-left: 10px; padding-right: 3px;"&gt;&lt;b&gt;Your Windows Azure Platform Usage Estimate - 75% of Base Units Consumed‏&lt;/b&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
This e-mail notification comes to you as a courtesy to update you on your Windows Azure platform usage.  Our records indicate that your subscription has exceeded 75% of the compute hours amount included with your offer for your current billing period.  Any hours in excess of the amount included with your offer will be charged at standard rates.&lt;br /&gt;
&lt;br /&gt;
Total Consumed*:                         592.000000 Compute Hours&lt;br /&gt;
Amount included with your offer:     750 Compute Hours&lt;br /&gt;
Amount over (under) your monthly average:        -158.000000 Compute Hours&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
Let's see... I should get 750 compute hours / month, a month has 31 days (a worse case analyses), 750 / 31 &gt; 24 which means I should have more than 24 complimentary compute hours per day. How could they run out so fast?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Bart Simpson's Azure Rule #1:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-PVZkVI5Cmsg/TV-sQT9wwvI/AAAAAAAABaI/sGmveWORo0k/s1600/bart2.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="321" width="600" src="http://3.bp.blogspot.com/-PVZkVI5Cmsg/TV-sQT9wwvI/AAAAAAAABaI/sGmveWORo0k/s1600/bart2.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
As a developer, it made too much sense to develop the &lt;a href="http://webservices20.cloudapp.net/"&gt;binding box&lt;/a&gt; and &lt;a href="http://webservices20.cloudapp.net/wsdl2wsdl.html"&gt;wsdl2wsdl&lt;/a&gt; in a separate visual studio solutions. This yields two separate azure hosted services:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-zoKzO7DxBk4/TV-tZe7PzXI/AAAAAAAABaQ/Fgojiuki1ds/s1600/azure1.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="193" width="400" src="http://2.bp.blogspot.com/-zoKzO7DxBk4/TV-tZe7PzXI/AAAAAAAABaQ/Fgojiuki1ds/s400/azure1.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
And this yields two separate bill items per day:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-uNyUXNcFf2k/TV-uH1I6xkI/AAAAAAAABaY/ByW96iUekRM/s1600/azure2.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="219" width="400" src="http://3.bp.blogspot.com/-uNyUXNcFf2k/TV-uH1I6xkI/AAAAAAAABaY/ByW96iUekRM/s400/azure2.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;b&gt;This means I was not paying for 24 compute hours per day, I was paying 24*2!&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-GK-9KBkIRK0/TV-6vdb777I/AAAAAAAABbA/sTH2_x_RLHI/s1600/homer.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="400" width="320" src="http://2.bp.blogspot.com/-GK-9KBkIRK0/TV-6vdb777I/AAAAAAAABbA/sTH2_x_RLHI/s400/homer.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Now you may say RTFM. But nobody does it. Not when we download some open source library from the web, and not when we upload something in the other direction.&lt;br /&gt;
&lt;br /&gt;
But why did the bill had 4 itmes and not two?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Bart Simpson's Azure Rule #2:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-UyqM2Q3wEtc/TV-wy5M0kCI/AAAAAAAABag/xaoa_zNCiLg/s1600/bart3.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="321" width="600" src="http://1.bp.blogspot.com/-UyqM2Q3wEtc/TV-wy5M0kCI/AAAAAAAABag/xaoa_zNCiLg/s1600/bart3.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Not only did I had two hosted services online, but I also had two environments for each - staging and deployment. You pay for what you get:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background-color: #eeeeee; padding-left: 10px; padding-right: 3px;"&gt;2 services * 2 deployments = 4 * 24 hours a day = &lt;b&gt;96 hours a day!&lt;/b&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Bart Simpson's Azure Rule #3:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-oKt8Z8qO3_M/TV-yCOykxhI/AAAAAAAABao/8ekP-DeBNaQ/s1600/bart4.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="321" width="600" src="http://2.bp.blogspot.com/-oKt8Z8qO3_M/TV-yCOykxhI/AAAAAAAABao/8ekP-DeBNaQ/s1600/bart4.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
I was on my way to a &lt;a href="http://en.wikipedia.org/wiki/Chapter_11,_Title_11,_United_States_Code"&gt;Chapter 11&lt;/a&gt; when I decided to panically press the stop button on my unintended deployments:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-4W_f7SP2VgM/TV-y3lxDxFI/AAAAAAAABaw/BQc4Zwi-sMI/s1600/stop.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="87" width="235" src="http://3.bp.blogspot.com/-4W_f7SP2VgM/TV-y3lxDxFI/AAAAAAAABaw/BQc4Zwi-sMI/s400/stop.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
However this does not &lt;a href="http://www.microsoft.com/online/help/en-us/helphowto/af25ac10-7c47-42dc-b139-dab954ed2eff.htm"&gt;reduce costs&lt;/a&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background-color: #eeeeee; padding-left: 10px; padding-right: 3px;"&gt;&lt;i&gt;Suspending your deployment will still result in charges because the compute instances are allocated to you and cannot be allocated to another customer.&lt;/i&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;b&gt;Remember: Always delete deployments you do not want to pay for. Suspending / stopping them still results in charges.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Bart Simpson's Azure Rule #4:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-jeN-w4qc_fo/TV-1RANF3yI/AAAAAAAABa4/8toVExQ-nGs/s1600/bart5.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="321" width="600" src="http://3.bp.blogspot.com/-jeN-w4qc_fo/TV-1RANF3yI/AAAAAAAABa4/8toVExQ-nGs/s1600/bart5.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
For applications with very small needs an &lt;a href="http://msdn.microsoft.com/en-us/library/ee814754.aspx"&gt;extra small instance&lt;/a&gt; should be enough. It can save you costs by &lt;b&gt;up to 60%!&lt;/b&gt; &lt;a href="http://msdn.microsoft.com/en-us/library/ee814754.aspx"&gt;Configuring it&lt;/a&gt; is very easy:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background-color: #eeeeee; padding-left: 10px; padding-right: 3px;"&gt;&amp;lt;WebRole name="WebRole1" vmsize="ExtraSmall"&amp;gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Conclusion&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Homer Simpson once said "Trying is the first step towards failure." In my case it was the first step to this blog post and to my first two weeks Azure bill:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-Z5I07o-K8oc/TV-7ae70p_I/AAAAAAAABbI/udNZmSy4jnk/s1600/bill.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="125" width="400" src="http://3.bp.blogspot.com/-Z5I07o-K8oc/TV-7ae70p_I/AAAAAAAABbI/udNZmSy4jnk/s400/bill.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
I'll end the month on around 50$ which is not too bad for a commercial site. But for a contribution to the community and my fun? Oh my...&lt;br /&gt;
&lt;br /&gt;
Weather you are an independent developer or a Fortune 5000 company - know the Azure &lt;a href="http://www.microsoft.com/windowsazure/pricing/"&gt;pricing model&lt;/a&gt; and how your account fits in.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1482776199578137808-801441008259024895?l=webservices20.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/U5JsLRSWQGU9yxnCDP4sbYbjjP8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/U5JsLRSWQGU9yxnCDP4sbYbjjP8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/U5JsLRSWQGU9yxnCDP4sbYbjjP8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/U5JsLRSWQGU9yxnCDP4sbYbjjP8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/WebServices20/~4/DO4EWMsThxo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://webservices20.blogspot.com/feeds/801441008259024895/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1482776199578137808&amp;postID=801441008259024895" title="8 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1482776199578137808/posts/default/801441008259024895?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1482776199578137808/posts/default/801441008259024895?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/WebServices20/~3/DO4EWMsThxo/bart-simpsons-guide-to-windows-azure.html" title="Bart Simpson's guide to Windows Azure" /><author><name>Yaron Naveh (MVP)</name><uri>http://www.blogger.com/profile/11793800386245798442</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://2.bp.blogspot.com/_6DvmzgV-o20/TKczhOA8ODI/AAAAAAAABWI/y6trZ_YyLPU/S220/me_small.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-riYODsfFs6U/TV-pHhon4CI/AAAAAAAABaA/KFO-OAbYqjU/s72-c/bart1.jpg" height="72" width="72" /><thr:total>8</thr:total><feedburner:origLink>http://webservices20.blogspot.com/2011/02/bart-simpsons-guide-to-windows-azure.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUEEQX85cCp7ImA9Wx9UFkw.&quot;"><id>tag:blogger.com,1999:blog-1482776199578137808.post-2960157726505119502</id><published>2011-02-13T19:20:00.060+02:00</published><updated>2011-02-13T19:20:00.128+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-13T19:20:00.128+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="X.509" /><title>Wcf: Keyset does not exist</title><content type="html">When using X.509 certificates with Wcf the below error may appear:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background-color: #eeeeee; padding-left: 10px; padding-right: 3px;"&gt;System.Security.Cryptography.CryptographicException: Keyset does not exist &lt;br /&gt;
ArgumentException: The certificate 'CN=MyCert' must have a private key that is capable of key exchange. The process must have access rights for the private key.&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
95% of the time this means that the certificate which the server/client use either does not have a private key or the Wcf host process does not have permissions to the key. &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;No private key&lt;/b&gt;&lt;br /&gt;
This case applies when the certificate is expected to have a private key, e.g. the server private certificate when defined on the server side, and not the server public when defined on the client. To check if the certificate has a private key follow these steps:&lt;br /&gt;
&lt;br /&gt;
1. start--&gt;run--&gt;"mmc"&lt;br /&gt;
&lt;br /&gt;
2. file--&gt;add remove snap in...&lt;br /&gt;
&lt;br /&gt;
3. double click "certificates" in the list&lt;br /&gt;
&lt;br /&gt;
4. Choose "My user account" if the certificate is located in the current user store, or "Computer account" if located on the local machine store. If you are unsure you can repeat the process twice each time with a different choice.&lt;br /&gt;
&lt;br /&gt;
5. click Finish + Ok&lt;br /&gt;
&lt;br /&gt;
6. now expand the tree to the correct store and when you see the certificate double click it. Then check if it has the little key icon on it. If it does not then you did not import it with its private key (or got the wrong cert).&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-vhKcMw672to/TVb8BM1IX2I/AAAAAAAABZk/r9jS0-FyYds/s1600/cert.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="354" width="400" src="http://1.bp.blogspot.com/-vhKcMw672to/TVb8BM1IX2I/AAAAAAAABZk/r9jS0-FyYds/s400/cert.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;b&gt;No permissions&lt;/b&gt;&lt;br /&gt;
Even if the certificate has a private key, it still does not mean all users on the machine have access to it. One common gotcha is to give access to the admin (or logged in user) but forget that IIS usually runs under another user account. This may cause a code to work correctly under an interactive user but to fail under IIS or any windows service. One way to check if this is the case is אם give the user &lt;everyone&gt; full permissions to the key (temporarily!).&lt;br /&gt;
&lt;br /&gt;
How to give permissions to a key?&lt;br /&gt;
the hard way is using WinHttpCertCfg.exe (&lt;a href="http://msdn.microsoft.com/en-us/library/aa384088(v=vs.85).aspx"&gt;details&lt;/a&gt; ,&lt;a href="http://www.microsoft.com/downloads/en/details.aspx?familyid=c42e27ac-3409-40e9-8667-c748e422833f&amp;displaylang=en"&gt;download&lt;/a&gt;):&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background-color: #eeeeee; padding-left: 10px; padding-right: 3px;"&gt;winhttpcertcfg -g -c LOCAL_MACHINE\My -s CN=WSE2QuickStartServer -a SomeUser&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
Another way is using some gui utility and WseCertificate2.exe is a good one:&lt;br /&gt;
&lt;br /&gt;
1. install the &lt;a href="http://www.microsoft.com/downloads/en/details.aspx?familyid=1ba1f631-c3e7-420a-bc1e-ef18bab66122&amp;displaylang=en"&gt;Wse2 sdk&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
2. run C:\Program Files\Microsoft WSE\v2.0\Tools\Certificates\WseCertificate2.exe&lt;br /&gt;
&lt;br /&gt;
3. choose the certificate using the location / store drop down lists and the "open certificate" button.&lt;br /&gt;
&lt;br /&gt;
4. click the "view private key file properties..." button on the bottom.&lt;br /&gt;
&lt;br /&gt;
5. depending on your OS version, grant permissions for the user you want.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-L89hIXEojyw/TVb-pxpp4OI/AAAAAAAABZs/Vv5sWq0XkA0/s1600/cert1.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="353" width="400" src="http://1.bp.blogspot.com/-L89hIXEojyw/TVb-pxpp4OI/AAAAAAAABZs/Vv5sWq0XkA0/s400/cert1.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
If all this did not help ten make sure that when have you installed the certificate you checked the "mark this key as exportable" checkbox:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-aroaDrDz3mM/TVb_FSdzNUI/AAAAAAAABZ0/XytFpQpX0c8/s1600/cert3.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="358" width="400" src="http://1.bp.blogspot.com/-aroaDrDz3mM/TVb_FSdzNUI/AAAAAAAABZ0/XytFpQpX0c8/s400/cert3.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Sometimes these permissions are cached so you can also restart IIS (and maybe even the PC). And as always with certificate, when you're already pulling out your hair it's time to uninstall all certificates and start all over again.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1482776199578137808-2960157726505119502?l=webservices20.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/DH0jDCSK1V0cVrQOfw3qE7hJ6BE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DH0jDCSK1V0cVrQOfw3qE7hJ6BE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/DH0jDCSK1V0cVrQOfw3qE7hJ6BE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DH0jDCSK1V0cVrQOfw3qE7hJ6BE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/WebServices20/~4/JJ0ZBPkSiyE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://webservices20.blogspot.com/feeds/2960157726505119502/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1482776199578137808&amp;postID=2960157726505119502" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1482776199578137808/posts/default/2960157726505119502?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1482776199578137808/posts/default/2960157726505119502?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/WebServices20/~3/JJ0ZBPkSiyE/wcf-keyset-does-not-exist.html" title="Wcf: Keyset does not exist" /><author><name>Yaron Naveh (MVP)</name><uri>http://www.blogger.com/profile/11793800386245798442</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://2.bp.blogspot.com/_6DvmzgV-o20/TKczhOA8ODI/AAAAAAAABWI/y6trZ_YyLPU/S220/me_small.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-vhKcMw672to/TVb8BM1IX2I/AAAAAAAABZk/r9jS0-FyYds/s72-c/cert.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://webservices20.blogspot.com/2011/02/wcf-keyset-does-not-exist.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0QNSXkyfSp7ImA9Wx9bEEs.&quot;"><id>tag:blogger.com,1999:blog-1482776199578137808.post-7643698719452192389</id><published>2011-02-12T12:28:00.003+02:00</published><updated>2011-02-19T00:49:58.795+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-19T00:49:58.795+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="wsdl2" /><title>Wcf support for Wsdl2</title><content type="html">Last time I introduced &lt;a href="http://webservices20.cloudapp.net/wsdl2wsdl.html"&gt;wsdl2wsdl&lt;/a&gt;, an online wsdl2--&gt;wsdl1 converter.&lt;br /&gt;
Today I am proud to announce &lt;a href="http://svcutil2.codeplex.com/"&gt;svcutil2&lt;/a&gt; - a Wcf proxy generator for Wsdl2. svcutil2, like the original svcutil, generates Wcf proxies from Wsdl2 documents. This is a huge accelerator for web services interoperability. See related discussion &lt;a href="http://webservices20.blogspot.com/2011/02/wsdl2wsdl-convert-wsdl-20-to-wsdl-11.html"&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
svcutil2 is &lt;a href="http://svcutil2.codeplex.com/"&gt;fully open sourced&lt;/a&gt; in CodePlex.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;How to generate Wcf clients from Wsdl2 documents?&lt;/b&gt;&lt;br /&gt;
1. Download the latest version of &lt;a href="http://svcutil2.codeplex.com/"&gt;svcutil2.exe&lt;/a&gt; from CodePlex&lt;br /&gt;
&lt;br /&gt;
2. Open the VS command console or otherwise make sure the original svcutil.exe is in the current path (usually located in C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin)&lt;br /&gt;
&lt;br /&gt;
3. Use svcutil2 exactly like you use svcutil:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background-color: #eeeeee; padding-left: 10px; padding-right: 3px;"&gt;$&gt; svcutil2.exe http://webservices20.cloudapp.net/wsdl2wsdl/wsdl/simple2.wsdl&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
you can also work with Wsdl's from file system or use any of the svcutil available flags.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1482776199578137808-7643698719452192389?l=webservices20.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/AsldLaZHrirjmFBotmV9s9Z4lnQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/AsldLaZHrirjmFBotmV9s9Z4lnQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/AsldLaZHrirjmFBotmV9s9Z4lnQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/AsldLaZHrirjmFBotmV9s9Z4lnQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/WebServices20/~4/Eg8Ihqsy6y4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://webservices20.blogspot.com/feeds/7643698719452192389/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1482776199578137808&amp;postID=7643698719452192389" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1482776199578137808/posts/default/7643698719452192389?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1482776199578137808/posts/default/7643698719452192389?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/WebServices20/~3/Eg8Ihqsy6y4/wcf-support-for-wsdl2.html" title="Wcf support for Wsdl2" /><author><name>Yaron Naveh (MVP)</name><uri>http://www.blogger.com/profile/11793800386245798442</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://2.bp.blogspot.com/_6DvmzgV-o20/TKczhOA8ODI/AAAAAAAABWI/y6trZ_YyLPU/S220/me_small.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://webservices20.blogspot.com/2011/02/wcf-support-for-wsdl2.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0QGQXc7eyp7ImA9Wx9bEEs.&quot;"><id>tag:blogger.com,1999:blog-1482776199578137808.post-607525057331675545</id><published>2011-02-05T23:53:00.003+02:00</published><updated>2011-02-19T00:48:40.903+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-19T00:48:40.903+02:00</app:edited><title>Downgrade! Convert Wsdl 2.0 to Wsdl 1.1 (Wsdl2Wsdl)</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://webservices20.cloudapp.net/wsdl2wsdl.html" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="87" width="305" src="http://2.bp.blogspot.com/_6DvmzgV-o20/TU2-G78v7dI/AAAAAAAABZU/1N1H--OORn4/s400/logo.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;b&gt;&lt;a href="http://webservices20.cloudapp.net/wsdl2wsdl.html"&gt;Wsdl2Wsdl&lt;/a&gt; is Here!&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://webservices20.cloudapp.net/wsdl2wsdl.html"&gt;Wsdl 2.0&lt;/a&gt; never fulfilled its promises: It did not replace Wsdl 1.1 and soap stacks rarely support it. It did not became the Metadata standard for Rest based web services. And in an era where a service metadata can be summed up with a resource uri, Wsdl 2.0 is barely looked at as a simplification. All this is hardly Wsdl 2.0 fault. It's the timing. The backlash against Soap/Wsdl based services was far behind its point of no return in the period where Wsdl 2.0 was expected to get high adoption. It is not too risky to bet that Wsdl 2.0 will never be implemented by existing soap stacks, and Wcf is no exception.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;And the sky is blue. So?&lt;/b&gt;&lt;br /&gt;
While service authors may elegantly ignore Wsdl 2, if you're on the consumer side you might need to consume a service which metadata is a Wsdl 2 document. Most chances are that your client stack does not support code generation from this version of Wsdl. This is an annoying interoperability problem.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Wsdl2Wsdl&lt;/b&gt;&lt;br /&gt;
I have written an &lt;b&gt;&lt;a href="http://webservices20.cloudapp.net/wsdl2wsdl.html"&gt;online Wsdl 2 --&gt; Wsdl 1 converter&lt;/a&gt;&lt;/b&gt;. While there are a number of &lt;a href="http://ssagara.blogspot.com/2009/01/converting-wsdl11-to-wsdl20-using-woden.html"&gt;Wsdl1 --&gt; Wsdl 2 converters&lt;/a&gt; available, I have yet to find one in the opposite direction.&lt;br /&gt;
&lt;a href="http://webservices20.cloudapp.net/wsdl2wsdl.html"&gt;Wsdl2Wsdl&lt;/a&gt; provides you a url which dynamically converts the Wsdl per demand. This means you always get the live version of the wsdl. &lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://webservices20.cloudapp.net/wsdl2wsdl.html" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="249" width="400" src="http://2.bp.blogspot.com/_6DvmzgV-o20/TU3C-k1gmtI/AAAAAAAABZc/gHZm09GPPHs/s400/wsdl2wsdl.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;b&gt;Can I run Wsdl2Wsdl on my premise?&lt;/b&gt;&lt;br /&gt;
The current version of &lt;a href="http://webservices20.cloudapp.net/wsdl2wsdl.html"&gt;Wsdl2Wsdl&lt;/a&gt; is web based so if your Wsdl has some secrets / IP you should take this into consideration. I plan to open source it and ship an on premise version. You are welcome to &lt;a href="mailto:yaronn01@gmail.com"&gt;contact me&lt;/a&gt; if you need this urgently.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Where is Wsdl2Wsdl?&lt;/b&gt;&lt;br /&gt;
It's hosted on my Azure account:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://webservices20.cloudapp.net/wsdl2wsdl.html"&gt;http://webservices20.cloudapp.net/wsdl2wsdl.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="mailto:yaronn01@gmail.com"&gt;Drop me a mail&lt;/a&gt; with any issue or feedback.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1482776199578137808-607525057331675545?l=webservices20.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Zxu1He8vaDaHPLKhE-3w-jtSzIk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Zxu1He8vaDaHPLKhE-3w-jtSzIk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Zxu1He8vaDaHPLKhE-3w-jtSzIk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Zxu1He8vaDaHPLKhE-3w-jtSzIk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/WebServices20/~4/OLETr-9bptM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://webservices20.blogspot.com/feeds/607525057331675545/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1482776199578137808&amp;postID=607525057331675545" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1482776199578137808/posts/default/607525057331675545?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1482776199578137808/posts/default/607525057331675545?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/WebServices20/~3/OLETr-9bptM/wsdl2wsdl-convert-wsdl-20-to-wsdl-11.html" title="Downgrade! Convert Wsdl 2.0 to Wsdl 1.1 (Wsdl2Wsdl)" /><author><name>Yaron Naveh (MVP)</name><uri>http://www.blogger.com/profile/11793800386245798442</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://2.bp.blogspot.com/_6DvmzgV-o20/TKczhOA8ODI/AAAAAAAABWI/y6trZ_YyLPU/S220/me_small.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_6DvmzgV-o20/TU2-G78v7dI/AAAAAAAABZU/1N1H--OORn4/s72-c/logo.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://webservices20.blogspot.com/2011/02/wsdl2wsdl-convert-wsdl-20-to-wsdl-11.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0EBQnk7eip7ImA9Wx9VFko.&quot;"><id>tag:blogger.com,1999:blog-1482776199578137808.post-493053751102191396</id><published>2011-02-02T22:47:00.000+02:00</published><updated>2011-02-02T22:47:33.702+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-02T22:47:33.702+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="X.509" /><title>Utility to export X.509 certificates</title><content type="html">The number of X.509 formats \ stores can be overwhelming: pfx, p12, pem, jks, windows store and more. When working on multi platform projects exporting the certificate from one format \ store to the other is essential. Traditionally the way to do it was with &lt;a href="http://www.openssl.org/"&gt;openssl&lt;/a&gt;. While there is nothing wrong with that, you usually forget how to use it a minute after you do, and need to learn it again the next time. &lt;br /&gt;
&lt;br /&gt;
Over a year ago &lt;a href="http://travisspencer.com/"&gt;travis&lt;/a&gt; had published a super relevant &lt;a href="http://travisspencer.com/blog/2009/10/exporting-keys-from-a-jks-and.html"&gt;utility to export certificates&lt;/a&gt;. It is really easy to use and prevents that recurring learning curve with openssl.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1482776199578137808-493053751102191396?l=webservices20.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/uNQVQ5Naa5TD2s1UcvL98VxCeO8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/uNQVQ5Naa5TD2s1UcvL98VxCeO8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/uNQVQ5Naa5TD2s1UcvL98VxCeO8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/uNQVQ5Naa5TD2s1UcvL98VxCeO8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/WebServices20/~4/X4r0-6tyhKQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://webservices20.blogspot.com/feeds/493053751102191396/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1482776199578137808&amp;postID=493053751102191396" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1482776199578137808/posts/default/493053751102191396?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1482776199578137808/posts/default/493053751102191396?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/WebServices20/~3/X4r0-6tyhKQ/utility-to-export-x509-certificates.html" title="Utility to export X.509 certificates" /><author><name>Yaron Naveh (MVP)</name><uri>http://www.blogger.com/profile/11793800386245798442</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://2.bp.blogspot.com/_6DvmzgV-o20/TKczhOA8ODI/AAAAAAAABWI/y6trZ_YyLPU/S220/me_small.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://webservices20.blogspot.com/2011/02/utility-to-export-x509-certificates.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUQCQH8_cSp7ImA9Wx9VFE8.&quot;"><id>tag:blogger.com,1999:blog-1482776199578137808.post-3002022699789114959</id><published>2011-01-30T23:36:00.000+02:00</published><updated>2011-01-30T23:36:01.149+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-30T23:36:01.149+02:00</app:edited><title>Xml Digital Signature: Signing the KeyInfo</title><content type="html">Frederic Vidal had shown me recently a nice trick with Xml digital signatures. Suppose you want to add a signature which looks like this:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background-color: #eeeeee; padding-left: 10px; padding-right: 3px;"&gt;    &amp;lt;ds:Signature xmlns:ds='http://www.w3.org/2000/09/xmldsig#' Id='Signature001'&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;      &amp;lt;ds:SignedInfo&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;        &amp;lt;ds:CanonicalizationMethod Algorithm='http://www.w3.org/TR/2001/REC-xml-c14n-20010315' /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;        &amp;lt;ds:SignatureMethod Algorithm='http://www.w3.org/2000/09/xmldsig#rsa-sha1' /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;        &amp;lt;ds:Reference URI=''&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;          &amp;lt;ds:Transforms&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;            &amp;lt;ds:Transform Algorithm='http://www.w3.org/2000/09/xmldsig#enveloped-signature' /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;          &amp;lt;/ds:Transforms&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;          &amp;lt;ds:DigestMethod Algorithm='http://www.w3.org/2000/09/xmldsig#sha1' /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;          &amp;lt;ds:DigestValue&amp;gt;sXe2PnaG...&amp;lt;/ds:DigestValue&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;        &amp;lt;/ds:Reference&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;        &lt;b&gt;&amp;lt;ds:Reference URI='#KeyInfo001'&amp;gt;&lt;/b&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;          &amp;lt;ds:DigestMethod Algorithm='http://www.w3.org/2000/09/xmldsig#sha1' /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;          &amp;lt;ds:DigestValue&amp;gt;ZOS23PQ9TcDu+G...&amp;lt;/ds:DigestValue&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;        &amp;lt;/ds:Reference&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;      &amp;lt;/ds:SignedInfo&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;      &amp;lt;ds:SignatureValue&gt;jTLX0/8XkY2aCte7...&amp;lt;/ds:SignatureValue&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;      &lt;b&gt;&amp;lt;ds:KeyInfo Id='KeyInfo001'&amp;gt;&lt;/b&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;        &amp;lt;ds:X509Data&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;          &amp;lt;ds:X509Certificate&gt;E3wdSY4n7MgUmJzMIGfMA0...&amp;lt;/ds:X509Certificate&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;        &amp;lt;/ds:X509Data&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;      &amp;lt;/ds:KeyInfo&amp;gt;&lt;br /&gt;
    &amp;lt;/ds:Signature&amp;gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
The interesting part is the second reference (in bold) – the signature signs the KeyInfo (#KeyInfo001), which is part of the signature element itself. The regular api to add reference to a signature is this:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background-color: #eeeeee; padding-left: 10px; padding-right: 3px;"&gt;var reference = new Reference();&lt;br /&gt;
reference.Uri = "#KeyInfo001";&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
However it will not work here since it will look for an element with this ID in the signed document (e.g. soap envelope). However the ID is inside the signature element itself, which is still not a part of the document because it was not create yet.&lt;br /&gt;
Frederic had found a nice trick: Inherit from SignedXml and override the default logic to find the references such that it will search in the signature itself (which is the base class).&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background-color: #eeeeee; padding-left: 10px; padding-right: 3px;"&gt;public class CustomIdSignedXml : SignedXml&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;    public CustomIdSignedXml(XmlDocument doc) : base(doc)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;    {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;       return;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;    }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;    public override XmlElement GetIdElement(XmlDocument doc, string id)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;    {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;      if (String.Compare(id, this.KeyInfo.Id, StringComparison.OrdinalIgnoreCase) == 0)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;        return this.KeyInfo.GetXml();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;      else&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;        return base.GetIdElement(doc, id);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;    }&lt;br /&gt;
}&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
This is applicable to web services, since many soap stacks will not allow to customize them to sign the KeyInfo, and if this is required you would need to sign the message like this yourself.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1482776199578137808-3002022699789114959?l=webservices20.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/dvDHx_tIAZyYCcll0Sg-X0qeVS0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dvDHx_tIAZyYCcll0Sg-X0qeVS0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/dvDHx_tIAZyYCcll0Sg-X0qeVS0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dvDHx_tIAZyYCcll0Sg-X0qeVS0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/WebServices20/~4/A6IRrNe5rqI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://webservices20.blogspot.com/feeds/3002022699789114959/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1482776199578137808&amp;postID=3002022699789114959" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1482776199578137808/posts/default/3002022699789114959?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1482776199578137808/posts/default/3002022699789114959?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/WebServices20/~3/A6IRrNe5rqI/xml-digital-signature-signing-keyinfo.html" title="Xml Digital Signature: Signing the KeyInfo" /><author><name>Yaron Naveh (MVP)</name><uri>http://www.blogger.com/profile/11793800386245798442</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://2.bp.blogspot.com/_6DvmzgV-o20/TKczhOA8ODI/AAAAAAAABWI/y6trZ_YyLPU/S220/me_small.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://webservices20.blogspot.com/2011/01/xml-digital-signature-signing-keyinfo.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU4CSX88eCp7ImA9Wx9VE04.&quot;"><id>tag:blogger.com,1999:blog-1482776199578137808.post-7138654880021250951</id><published>2011-01-29T23:43:00.002+02:00</published><updated>2011-01-29T23:52:48.170+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-29T23:52:48.170+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="gSOAP" /><title>gSoap and Wcf Routing Services are not friends</title><content type="html">&lt;p&gt;One common patterns with web services is the router service. It can hide routing logic from the client or help with load balancing. Wcf 4 ships with libraries and &lt;a href="http://channel9.msdn.com/Shows/10-4/10-4-Episode-40-The-New-WCF-Routing-Service"&gt;samples&lt;/a&gt; to help build such a router very quickly. &lt;/p&gt;&lt;p&gt;Stephen Liedig had notified me recently on a problem which happens when a &lt;a href="http://www.cs.fsu.edu/~engelen/soap.html"&gt;gSoap client&lt;/a&gt; calls a Wcf router. gSoap is a very popular CPP web services stack. &lt;/p&gt;&lt;p&gt;This was the deployment:&lt;/p&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_6DvmzgV-o20/TUSFtzZdbtI/AAAAAAAABZI/asCN1rmlPwY/s1600/router.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="204" width="400" src="http://3.bp.blogspot.com/_6DvmzgV-o20/TUSFtzZdbtI/AAAAAAAABZI/asCN1rmlPwY/s400/router.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;p&gt;The gSoap client was sending this message to the router:&lt;/p&gt;&lt;div style="background-color: #eeeeee; padding-left: 10px; padding-right: 3px;"&gt;&lt;p&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;soap:Envelope&lt;/font&gt;&lt;font color="#ff0000"&gt; xmlns&lt;/font&gt;&lt;font color="#0000ff"&gt;=&amp;quot;http://tempuri.org/&amp;quot;&lt;/font&gt;&lt;font color="#ff0000"&gt; xmlns:p&lt;/font&gt;&lt;font color="#0000ff"&gt;=&amp;quot;http://myNs/&amp;quot;&lt;/font&gt;&lt;font color="#ff0000"&gt; xmlns:soap&lt;/font&gt;&lt;font color="#0000ff"&gt;=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot;&lt;/font&gt;&lt;font color="#ff0000"&gt; xmlns:xsi&lt;/font&gt;&lt;font color="#0000ff"&gt;=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;        &lt;br /&gt;
&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;soap:Body&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;AddUser&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;user&lt;/font&gt;&lt;font color="#ff0000"&gt; xsi:type&lt;/font&gt;&lt;font color="#0000ff"&gt;=&amp;quot;p:User&amp;quot;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;name&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;yaron&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000"&gt;name&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000"&gt;user&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000"&gt;AddUser&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;        &lt;br /&gt;
&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000"&gt;soap:Body&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;        &lt;br /&gt;
&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000"&gt;soap:Envelope&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt; &lt;/p&gt;&lt;/div&gt;&lt;br /&gt;
If the router would call the service using the http endpoint, everything would work. If it used the tcp endpoint, it could send the message, but the service implementation would never be called and the service would report this exception:&lt;br /&gt;
&lt;div style="background-color: #eeeeee; padding-left: 10px; padding-right: 3px;"&gt;&lt;p&gt;&lt;br /&gt;
The formatter threw an exception while trying to deserialize the message: There was an error while trying to deserialize parameter &lt;a href="http://tempuri.org/:user"&gt;http://tempuri.org/:user&lt;/a&gt;. The InnerException message was 'Element '&lt;a href="http://tempuri.org/:user'"&gt;http://tempuri.org/:user'&lt;/a&gt; contains data of the ':User' data contract. The deserializer has no knowledge of any type that maps to this contract. Add the type corresponding to 'User' to the list of known types - for example, by using the KnownTypeAttribute attribute or by adding it to the list of known types passed to DataContractSerializer.'.&amp;#160; Please see InnerException for more details.&lt;br /&gt;
&lt;br /&gt;
&lt;/p&gt;&lt;/div&gt;&lt;strong&gt;Analysis&lt;/strong&gt;&lt;br /&gt;
&lt;p&gt;We need to ask two questions: Why this error happens? Why not with Http?&lt;/p&gt;&lt;p&gt;First we must take a look in the message that the router sent to the service. Here is how it appears in the Wcf log:&lt;/p&gt;&lt;div style="background-color: #eeeeee; padding-left: 10px; padding-right: 3px;"&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;soap:Envelope&lt;/font&gt;&lt;font color="#ff0000"&gt; xmlns&lt;/font&gt;&lt;font color="#0000ff"&gt;=&amp;quot;http://tempuri.org/&amp;quot;&lt;/font&gt;&lt;font color="#ff0000"&gt; &lt;/font&gt;&lt;font color="#ff0000"&gt;xmlns:soap&lt;/font&gt;&lt;font color="#0000ff"&gt;=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot;&lt;/font&gt;&lt;font color="#ff0000"&gt; xmlns:xsi&lt;/font&gt;&lt;font color="#0000ff"&gt;=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;      &lt;br /&gt;
&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;soap:Body&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;      &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;AddUser&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;      &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;user&lt;/font&gt;&lt;font color="#ff0000"&gt; xsi:type&lt;/font&gt;&lt;font color="#0000ff"&gt;=&amp;quot;p:User&amp;quot;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;      &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;name&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;yaron&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000"&gt;name&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;      &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000"&gt;user&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;      &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000"&gt;AddUser&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;      &lt;br /&gt;
&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000"&gt;soap:Body&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;      &lt;br /&gt;
&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000"&gt;soap:Envelope&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt; &lt;/div&gt;&lt;p&gt;&lt;br /&gt;
Something is missing – the “p” prefix declaration (&lt;font color="#ff0000"&gt;xmlns:p&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;a href="http://myNs/"&gt;http://myNs/&lt;/a&gt;&lt;/font&gt;) which was present in the message form the client to the router does not appear. This makes this message invalid as it references the undeclared prefix "p" in the "p:User" derived type attribute. But why did the router sent an invalid message when the client sent it a good one? And why not with Http?&lt;/p&gt;&lt;p&gt;Let’s take a look at how Wcf routes messages. We can use the reflector to inspect System.ServiceModel.Routing.SoapProcessingBehavior+SoapProcessingInspector.MarshalMessage():&lt;/p&gt;&lt;div style="background-color: #eeeeee; padding-left: 10px; padding-right: 3px;"&gt;&lt;div class="code"&gt;&lt;font color="#0000ff"&gt;internal&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;Message&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;MarshalMessage(Message&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;source,&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;Uri&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;to,&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;MessageVersion&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;targetVersion)&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;Message&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;message&lt;/font&gt;&lt;font color="#0000ff"&gt;;&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;MessageVersion&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;version&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;source.Version&lt;/font&gt;&lt;font color="#0000ff"&gt;;&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;if&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;((version&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;==&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;targetVersion)&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;amp;&amp;amp;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;!RoutingUtilities.IsMessageUsingWSSecurity(understoodHeaders))&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;...&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;return&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;source&lt;/font&gt;&lt;font color="#0000ff"&gt;;&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;...&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;else&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;XmlDictionaryReader&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;readerAtBodyContents&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;source.GetReaderAtBodyContents()&lt;/font&gt;&lt;font color="#0000ff"&gt;;&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;message&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;Message.CreateMessage(targetVersion,&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;headers.Action,&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;readerAtBodyContents)&lt;/font&gt;&lt;font color="#0000ff"&gt;;&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;this&lt;/font&gt;&lt;font color="#000000"&gt;.CloneHeaders(message.Headers,&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;headers,&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;to,&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;understoodHeadersSet)&lt;/font&gt;&lt;font color="#0000ff"&gt;;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;return&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;message&lt;/font&gt;&lt;font color="#0000ff"&gt;;&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;font color="#808080"&gt;        &lt;br /&gt;
&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;Wcf uses this logic: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;If the input message (from client) and output message (to server) have the same version, and no security is involved, then take the input as is and send it. This explains why the Http case works. &lt;/li&gt;
&lt;li&gt;Otherwise take the input message &lt;strong&gt;body&lt;/strong&gt; and copy it to a new message. Then copy custom user headers. &lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Since the “p” prefix is not defined under the body but under the root “envelope” element, this prefix is not sent which makes the message invalid. This explains the netTcp bug.&lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Why Wcf behaves in this way?&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Dismissing this behavior as a bug will miss an important discussion. Consider the naïve fix: Parse each attribute under the body and search for the something:something pattern. Since the router has no information about the message semantics it has no way to know if the pattern relates to a prefix or is just a string which looks like this. Moreover doing this would be a huge performance hit, especially with big messages.&lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;What should be the correct behavior?&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;In order to take both the functional and performance requirements into account, I would recommend the following approach:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Copy all namespace declarations from the root Envelope and Body elements of the original message into the corresponding elements of the new one (including the default namespace).&lt;/li&gt;
&lt;li&gt;Make sure not to overload the previous prefixes with new definitions in both elements.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Yes, I can think of a few edge cases where this scheme fails. But a more comprehensive solution would cost in performance. &lt;/p&gt;&lt;p&gt;&lt;br /&gt;
&lt;p&gt;&lt;b&gt;Conclusion&lt;/b&gt;&lt;br /&gt;
&lt;/p&gt;&lt;p&gt;As it stands now, the &lt;b&gt;default gSoap client&lt;/b&gt; fails to call the &lt;b&gt;default Wcf router&lt;/b&gt; when &lt;b&gt;protocol bridging&lt;/b&gt; is used, which is a real interoperability problem.&lt;/p&gt;&lt;p&gt;And Just to clarify, this web service does not define any derived (=inherited = known) types. For some reason the gSoap default message generation logic uses the xsi:type even on base types. This is&amp;#160; not forbidden since it uses the correct type name, although there is no real reason to do it. Anyway this makes this case quite common and not limited to services with derived types.&lt;/p&gt;&lt;p&gt;And, yes, this is one of the reasons &lt;a href="http://www.xml.com/pub/a/2004/11/03/deviant.html"&gt;not everyone&lt;/a&gt; likes Xml.&lt;/p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1482776199578137808-7138654880021250951?l=webservices20.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Y7FEzIGuCFMnYcD3GiInpCFkGEU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Y7FEzIGuCFMnYcD3GiInpCFkGEU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Y7FEzIGuCFMnYcD3GiInpCFkGEU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Y7FEzIGuCFMnYcD3GiInpCFkGEU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/WebServices20/~4/-foqMOiDanM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://webservices20.blogspot.com/feeds/7138654880021250951/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1482776199578137808&amp;postID=7138654880021250951" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1482776199578137808/posts/default/7138654880021250951?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1482776199578137808/posts/default/7138654880021250951?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/WebServices20/~3/-foqMOiDanM/gsoap-and-wcf-routing-services-are-not.html" title="gSoap and Wcf Routing Services are not friends" /><author><name>Yaron Naveh (MVP)</name><uri>http://www.blogger.com/profile/11793800386245798442</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://2.bp.blogspot.com/_6DvmzgV-o20/TKczhOA8ODI/AAAAAAAABWI/y6trZ_YyLPU/S220/me_small.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_6DvmzgV-o20/TUSFtzZdbtI/AAAAAAAABZI/asCN1rmlPwY/s72-c/router.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://webservices20.blogspot.com/2011/01/gsoap-and-wcf-routing-services-are-not.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0QNQn44eSp7ImA9Wx9WEE4.&quot;"><id>tag:blogger.com,1999:blog-1482776199578137808.post-6280671564772074978</id><published>2011-01-14T22:14:00.001+02:00</published><updated>2011-01-14T23:09:53.031+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-14T23:09:53.031+02:00</app:edited><title>Security interop gotcha: Empty signature transformation</title><content type="html">Markó had &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/a8dc6d85-6147-4e44-bfd3-7c4eeacf4f96#8256cd77-3abe-4a4d-bfff-261a85dd40f4"&gt;challenged me&lt;/a&gt; recently with a security interoperability case between Wcf and WSIT (metro). A mutual X.509 protection was involved, and the Java server was returning the following soap fault:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background-color: #eeeeee; padding-left: 10px; padding-right: 3px;"&gt;&lt;br /&gt;
com.sun.xml.wss.XWSSecurityException: Encryption Policy verification error: Looking for an Encryption Element&amp;nbsp; in Security header, but found &lt;a href="mailto:com.sun.xml.wss.impl.policy.mls.SignaturePolicy@3657517"&gt;com.sun.xml.wss.impl.policy.mls.SignaturePolicy@3657517&lt;/a&gt; &lt;/div&gt;&lt;br /&gt;
I have not seen this error before, but I have followed the book and asked for a sample working soap message:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background-color: #eeeeee; padding-left: 10px; padding-right: 3px;"&gt;&lt;br /&gt;
&lt;div class="code"&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;S:Envelope&lt;/span&gt;&lt;span style="color: red;"&gt; xmlns:S&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://schemas.xmlsoap.org/soap/envelope/"&lt;/span&gt;&lt;span style="color: red;"&gt; xmlns:wsse11&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://docs.oasis-open.org/wss/oasis-wss-wssecurity-secext-1.1.xsd"&lt;/span&gt;&lt;span style="color: red;"&gt; xmlns:wsse&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"&lt;/span&gt;&lt;span style="color: red;"&gt; xmlns:wsu&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"&lt;/span&gt;&lt;span style="color: red;"&gt; xmlns:xs&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://www.w3.org/2001/XMLSchema"&lt;/span&gt;&lt;span style="color: red;"&gt; xmlns:ds&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://www.w3.org/2000/09/xmldsig#"&lt;/span&gt;&lt;span style="color: red;"&gt; xmlns:xenc&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://www.w3.org/2001/04/xmlenc#"&lt;/span&gt;&lt;span style="color: red;"&gt; xmlns:exc14n&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://www.w3.org/2001/10/xml-exc-c14n#"&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;S:Header&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;To&lt;/span&gt;&lt;span style="color: red;"&gt; xmlns&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://www.w3.org/2005/08/addressing"&lt;/span&gt;&lt;span style="color: red;"&gt; wsu:Id&lt;/span&gt;&lt;span style="color: blue;"&gt;="_5006"&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt;http://server.com&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;To&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;Action&lt;/span&gt;&lt;span style="color: red;"&gt; xmlns&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://www.w3.org/2005/08/addressing"&lt;/span&gt;&lt;span style="color: red;"&gt; wsu:Id&lt;/span&gt;&lt;span style="color: blue;"&gt;="_5005"&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt;someAction&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;Action&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;ReplyTo&lt;/span&gt;&lt;span style="color: red;"&gt; xmlns&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://www.w3.org/2005/08/addressing"&lt;/span&gt;&lt;span style="color: red;"&gt; wsu:Id&lt;/span&gt;&lt;span style="color: blue;"&gt;="_5004"&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;Address&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt;http://www.w3.org/2005/08/addressing/anonymous&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;Address&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;ReplyTo&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;MessageID&lt;/span&gt;&lt;span style="color: red;"&gt; xmlns&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://www.w3.org/2005/08/addressing"&lt;/span&gt;&lt;span style="color: red;"&gt; wsu:Id&lt;/span&gt;&lt;span style="color: blue;"&gt;="_5003"&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt;uuid:203aa9ea-eea6-4f96-b0b2-16575411e9a2&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;MessageID&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;wsse:Security&lt;/span&gt;&lt;span style="color: red;"&gt; S:mustUnderstand&lt;/span&gt;&lt;span style="color: blue;"&gt;="1"&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;wsu:Timestamp&lt;/span&gt;&lt;span style="color: red;"&gt; xmlns:ns19&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://schemas.xmlsoap.org/ws/2006/02/addressingidentity"&lt;/span&gt;&lt;span style="color: red;"&gt; xmlns:ns18&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://docs.oasis-open.org/ws-sx/ws-secureconversation/200512"&lt;/span&gt;&lt;span style="color: red;"&gt; xmlns:ns17&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://www.w3.org/2003/05/soap-envelope"&lt;/span&gt;&lt;span style="color: red;"&gt; wsu:Id&lt;/span&gt;&lt;span style="color: blue;"&gt;="_3"&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;wsu:Created&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt;2010-12-22T14:25:10Z&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;wsu:Created&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;wsu:Expires&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt;2010-12-22T14:30:10Z&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;wsu:Expires&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;wsu:Timestamp&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;wsse:BinarySecurityToken&lt;/span&gt;&lt;span style="color: red;"&gt; xmlns:ns19&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://schemas.xmlsoap.org/ws/2006/02/addressingidentity"&lt;/span&gt;&lt;span style="color: red;"&gt; xmlns:ns18&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://docs.oasis-open.org/ws-sx/ws-secureconversation/200512"&lt;/span&gt;&lt;span style="color: red;"&gt; xmlns:ns17&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://www.w3.org/2003/05/soap-envelope"&lt;/span&gt;&lt;span style="color: red;"&gt; ValueType&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3"&lt;/span&gt;&lt;span style="color: red;"&gt; EncodingType&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary"&lt;/span&gt;&lt;span style="color: red;"&gt; wsu:Id&lt;/span&gt;&lt;span style="color: blue;"&gt;="uuid_87b326f6-54fe-42d5-a3a5-aea7cb12f66b"&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt;PO7sWakqK...&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;wsse:BinarySecurityToken&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;xenc:EncryptedKey&lt;/span&gt;&lt;span style="color: red;"&gt; xmlns:ns19&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://schemas.xmlsoap.org/ws/2006/02/addressingidentity"&lt;/span&gt;&lt;span style="color: red;"&gt; xmlns:ns18&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://docs.oasis-open.org/ws-sx/ws-secureconversation/200512"&lt;/span&gt;&lt;span style="color: red;"&gt; xmlns:ns17&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://www.w3.org/2003/05/soap-envelope"&lt;/span&gt;&lt;span style="color: red;"&gt; Id&lt;/span&gt;&lt;span style="color: blue;"&gt;="_5002"&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;xenc:EncryptionMethod&lt;/span&gt;&lt;span style="color: red;"&gt; Algorithm&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p"&lt;/span&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:KeyInfo&lt;/span&gt;&lt;span style="color: red;"&gt; xmlns:xsi&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://www.w3.org/2001/XMLSchema-instance"&lt;/span&gt;&lt;span style="color: red;"&gt; xsi:type&lt;/span&gt;&lt;span style="color: blue;"&gt;="KeyInfoType"&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;wsse:SecurityTokenReference&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;wsse:KeyIdentifier&lt;/span&gt;&lt;span style="color: red;"&gt; ValueType&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://docs.oasis-open.org/wss/oasis-wss-soap-message-security-1.1#ThumbprintSHA1"&lt;/span&gt;&lt;span style="color: red;"&gt; EncodingType&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary"&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt;TzX5OGaS9Ftsw1t+eGyfBmJblWc=&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;wsse:KeyIdentifier&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;wsse:SecurityTokenReference&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:KeyInfo&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;xenc:CipherData&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;xenc:CipherValue&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt;WJU7hIO...&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;xenc:CipherValue&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;xenc:CipherData&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;xenc:EncryptedKey&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;xenc:ReferenceList&lt;/span&gt;&lt;span style="color: red;"&gt; xmlns:ns19&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://schemas.xmlsoap.org/ws/2006/02/addressingidentity"&lt;/span&gt;&lt;span style="color: red;"&gt; xmlns:ns18&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://docs.oasis-open.org/ws-sx/ws-secureconversation/200512"&lt;/span&gt;&lt;span style="color: red;"&gt; xmlns:ns17&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://www.w3.org/2003/05/soap-envelope"&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;xenc:DataReference&lt;/span&gt;&lt;span style="color: red;"&gt; URI&lt;/span&gt;&lt;span style="color: blue;"&gt;="#_5008"&lt;/span&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;xenc:ReferenceList&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:Signature&lt;/span&gt;&lt;span style="color: red;"&gt; xmlns:ns19&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://schemas.xmlsoap.org/ws/2006/02/addressingidentity"&lt;/span&gt;&lt;span style="color: red;"&gt; xmlns:ns18&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://docs.oasis-open.org/ws-sx/ws-secureconversation/200512"&lt;/span&gt;&lt;span style="color: red;"&gt; xmlns:ns17&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://www.w3.org/2003/05/soap-envelope"&lt;/span&gt;&lt;span style="color: red;"&gt; Id&lt;/span&gt;&lt;span style="color: blue;"&gt;="_1"&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:SignedInfo&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:CanonicalizationMethod&lt;/span&gt;&lt;span style="color: red;"&gt; Algorithm&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://www.w3.org/2001/10/xml-exc-c14n#"&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;exc14n:InclusiveNamespaces&lt;/span&gt;&lt;span style="color: red;"&gt; PrefixList&lt;/span&gt;&lt;span style="color: blue;"&gt;="wsse S"&lt;/span&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:CanonicalizationMethod&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:SignatureMethod&lt;/span&gt;&lt;span style="color: red;"&gt; Algorithm&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://www.w3.org/2000/09/xmldsig#hmac-sha1"&lt;/span&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:Reference&lt;/span&gt;&lt;span style="color: red;"&gt; URI&lt;/span&gt;&lt;span style="color: blue;"&gt;="#_5003"&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:Transforms&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:Transform&lt;/span&gt;&lt;span style="color: red;"&gt; Algorithm&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://www.w3.org/2001/10/xml-exc-c14n#"&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;exc14n:InclusiveNamespaces&lt;/span&gt;&lt;span style="color: red;"&gt; PrefixList&lt;/span&gt;&lt;span style="color: blue;"&gt;="S"&lt;/span&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:Transform&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:Transforms&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:DigestMethod&lt;/span&gt;&lt;span style="color: red;"&gt; Algorithm&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://www.w3.org/2000/09/xmldsig#sha1"&lt;/span&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:DigestValue&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt;q9TWoUKb25xlel3AIA8bFUkl0hw=&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:DigestValue&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:Reference&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:Reference&lt;/span&gt;&lt;span style="color: red;"&gt; URI&lt;/span&gt;&lt;span style="color: blue;"&gt;="#_5004"&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:Transforms&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:Transform&lt;/span&gt;&lt;span style="color: red;"&gt; Algorithm&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://www.w3.org/2001/10/xml-exc-c14n#"&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;exc14n:InclusiveNamespaces&lt;/span&gt;&lt;span style="color: red;"&gt; PrefixList&lt;/span&gt;&lt;span style="color: blue;"&gt;="S"&lt;/span&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:Transform&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:Transforms&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:DigestMethod&lt;/span&gt;&lt;span style="color: red;"&gt; Algorithm&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://www.w3.org/2000/09/xmldsig#sha1"&lt;/span&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:DigestValue&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt;5Ab1ebo4/FraGgck/A8iDx1J9+I=&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:DigestValue&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:Reference&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:Reference&lt;/span&gt;&lt;span style="color: red;"&gt; URI&lt;/span&gt;&lt;span style="color: blue;"&gt;="#_5005"&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:Transforms&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:Transform&lt;/span&gt;&lt;span style="color: red;"&gt; Algorithm&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://www.w3.org/2001/10/xml-exc-c14n#"&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;exc14n:InclusiveNamespaces&lt;/span&gt;&lt;span style="color: red;"&gt; PrefixList&lt;/span&gt;&lt;span style="color: blue;"&gt;="S"&lt;/span&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:Transform&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:Transforms&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:DigestMethod&lt;/span&gt;&lt;span style="color: red;"&gt; Algorithm&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://www.w3.org/2000/09/xmldsig#sha1"&lt;/span&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:DigestValue&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt;ipPKrD6igfYF3tC10tsurnoHSks=&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:DigestValue&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:Reference&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:Reference&lt;/span&gt;&lt;span style="color: red;"&gt; URI&lt;/span&gt;&lt;span style="color: blue;"&gt;="#_5006"&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:Transforms&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:Transform&lt;/span&gt;&lt;span style="color: red;"&gt; Algorithm&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://www.w3.org/2001/10/xml-exc-c14n#"&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;exc14n:InclusiveNamespaces&lt;/span&gt;&lt;span style="color: red;"&gt; PrefixList&lt;/span&gt;&lt;span style="color: blue;"&gt;="S"&lt;/span&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:Transform&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:Transforms&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:DigestMethod&lt;/span&gt;&lt;span style="color: red;"&gt; Algorithm&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://www.w3.org/2000/09/xmldsig#sha1"&lt;/span&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:DigestValue&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt;cMG2PvlZKNLoAWehtNhxruuRl9Y=&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:DigestValue&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:Reference&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:Reference&lt;/span&gt;&lt;span style="color: red;"&gt; URI&lt;/span&gt;&lt;span style="color: blue;"&gt;="#_5007"&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:Transforms&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:Transform&lt;/span&gt;&lt;span style="color: red;"&gt; Algorithm&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://www.w3.org/2001/10/xml-exc-c14n#"&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;exc14n:InclusiveNamespaces&lt;/span&gt;&lt;span style="color: red;"&gt; PrefixList&lt;/span&gt;&lt;span style="color: blue;"&gt;="S"&lt;/span&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:Transform&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:Transforms&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:DigestMethod&lt;/span&gt;&lt;span style="color: red;"&gt; Algorithm&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://www.w3.org/2000/09/xmldsig#sha1"&lt;/span&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:DigestValue&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt;rRhCJKKcNv2gfh+Hpi62wDEirbE=&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:DigestValue&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:Reference&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:Reference&lt;/span&gt;&lt;span style="color: red;"&gt; URI&lt;/span&gt;&lt;span style="color: blue;"&gt;="#_3"&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:Transforms&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:Transform&lt;/span&gt;&lt;span style="color: red;"&gt; Algorithm&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://www.w3.org/2001/10/xml-exc-c14n#"&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;exc14n:InclusiveNamespaces&lt;/span&gt;&lt;span style="color: red;"&gt; PrefixList&lt;/span&gt;&lt;span style="color: blue;"&gt;="wsu wsse S"&lt;/span&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:Transform&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:Transforms&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:DigestMethod&lt;/span&gt;&lt;span style="color: red;"&gt; Algorithm&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://www.w3.org/2000/09/xmldsig#sha1"&lt;/span&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:DigestValue&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt;OUm9PNmaQgH1CQ4JitIqVX5eY+g=&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:DigestValue&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:Reference&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:Reference&lt;/span&gt;&lt;span style="color: red;"&gt; URI&lt;/span&gt;&lt;span style="color: blue;"&gt;="#uuid_87b326f6-54fe-42d5-a3a5-aea7cb12f66b"&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:Transforms&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:Transform&lt;/span&gt;&lt;span style="color: red;"&gt; Algorithm&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://www.w3.org/2001/10/xml-exc-c14n#"&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;exc14n:InclusiveNamespaces&lt;/span&gt;&lt;span style="color: red;"&gt; PrefixList&lt;/span&gt;&lt;span style="color: blue;"&gt;="wsu wsse S"&lt;/span&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:Transform&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:Transforms&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:DigestMethod&lt;/span&gt;&lt;span style="color: red;"&gt; Algorithm&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://www.w3.org/2000/09/xmldsig#sha1"&lt;/span&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:DigestValue&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt;r5dVsFsteThPivLkpsO+Fme5FIs=&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:DigestValue&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:Reference&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:SignedInfo&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:SignatureValue&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt;8PLYt+ddRqRV2i7tX2R7PgIEJU=&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:SignatureValue&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:KeyInfo&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;wsse:SecurityTokenReference&lt;/span&gt;&lt;span style="color: red;"&gt; wsu:Id&lt;/span&gt;&lt;span style="color: blue;"&gt;="uuid_ba14a75f-0bee-4ec6-ae77-2646ab277e2f"&lt;/span&gt;&lt;span style="color: red;"&gt; wsse11:TokenType&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://docs.oasis-open.org/wss/oasis-wss-soap-message-security-1.1#EncryptedKey"&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;wsse:Reference&lt;/span&gt;&lt;span style="color: red;"&gt; URI&lt;/span&gt;&lt;span style="color: blue;"&gt;="#_5002"&lt;/span&gt;&lt;span style="color: red;"&gt; ValueType&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://docs.oasis-open.org/wss/oasis-wss-soap-message-security-1.1#EncryptedKey"&lt;/span&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;wsse:SecurityTokenReference&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:KeyInfo&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:Signature&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;wsse:Security&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;S:Header&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;S:Body&lt;/span&gt;&lt;span style="color: red;"&gt; wsu:Id&lt;/span&gt;&lt;span style="color: blue;"&gt;="_5007"&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;xenc:EncryptedData&lt;/span&gt;&lt;span style="color: red;"&gt; xmlns:ns19&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://schemas.xmlsoap.org/ws/2006/02/addressingidentity"&lt;/span&gt;&lt;span style="color: red;"&gt; xmlns:ns18&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://docs.oasis-open.org/ws-sx/ws-secureconversation/200512"&lt;/span&gt;&lt;span style="color: red;"&gt; xmlns:ns17&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://www.w3.org/2003/05/soap-envelope"&lt;/span&gt;&lt;span style="color: red;"&gt; Id&lt;/span&gt;&lt;span style="color: blue;"&gt;="_5008"&lt;/span&gt;&lt;span style="color: red;"&gt; Type&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://www.w3.org/2001/04/xmlenc#Content"&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;xenc:EncryptionMethod&lt;/span&gt;&lt;span style="color: red;"&gt; Algorithm&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://www.w3.org/2001/04/xmlenc#aes128-cbc"&lt;/span&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:KeyInfo&lt;/span&gt;&lt;span style="color: red;"&gt; xmlns:xsi&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://www.w3.org/2001/XMLSchema-instance"&lt;/span&gt;&lt;span style="color: red;"&gt; xsi:type&lt;/span&gt;&lt;span style="color: blue;"&gt;="KeyInfoType"&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;wsse:SecurityTokenReference&lt;/span&gt;&lt;span style="color: red;"&gt; wsse11:TokenType&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://docs.oasis-open.org/wss/oasis-wss-soap-message-security-1.1#EncryptedKey"&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;wsse:Reference&lt;/span&gt;&lt;span style="color: red;"&gt; URI&lt;/span&gt;&lt;span style="color: blue;"&gt;="#_5002"&lt;/span&gt;&lt;span style="color: red;"&gt; ValueType&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://docs.oasis-open.org/wss/oasis-wss-soap-message-security-1.1#EncryptedKey"&lt;/span&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;wsse:SecurityTokenReference&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:KeyInfo&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;xenc:CipherData&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;xenc:CipherValue&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt;+VCg/Fg9BR...&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;xenc:CipherValue&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;xenc:CipherData&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;xenc:EncryptedData&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;S:Body&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;S:Envelope&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;br /&gt;
&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
This looks a little intimidating, but I was actually able to create a Wcf custom binding which generates this exact message:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background-color: #eeeeee; padding-left: 10px; padding-right: 3px;"&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="code"&gt;&lt;span style="color: blue;"&gt;private&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;static&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;CustomBinding&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;CreateCustomBinding(EndpointAddress&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;address)&lt;/span&gt;&lt;span style="color: grey;"&gt; &lt;br /&gt;
&lt;/span&gt;&lt;span style="color: black;"&gt;{&lt;/span&gt;&lt;span style="color: grey;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;var&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;res&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;new&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;CustomBinding()&lt;/span&gt;&lt;span style="color: blue;"&gt;;&lt;/span&gt;&lt;span style="color: grey;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: black;"&gt;SymmetricSecurityBindingElement&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;sec&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: grey;"&gt; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: black;"&gt;(SymmetricSecurityBindingElement)SecurityBindingElement.CreateMutualCertificateBindingElement(&lt;/span&gt;&lt;span style="color: grey;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: black;"&gt;MessageSecurityVersion.&lt;/span&gt;&lt;span style="color: grey;"&gt; &lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;WSSecurity11WSTrust13WSSecureConversation13WSSecurityPolicy12BasicSecurityProfile10)&lt;/span&gt;&lt;span style="color: blue;"&gt;;&lt;/span&gt;&lt;span style="color: grey;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: black;"&gt;res.Elements.Add(sec)&lt;/span&gt;&lt;span style="color: blue;"&gt;;&lt;/span&gt;&lt;span style="color: grey;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: black;"&gt;sec.SetKeyDerivation(&lt;/span&gt;&lt;span style="color: blue;"&gt;false&lt;/span&gt;&lt;span style="color: black;"&gt;)&lt;/span&gt;&lt;span style="color: blue;"&gt;;&lt;/span&gt;&lt;span style="color: grey;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: black;"&gt;sec.MessageProtectionOrder&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;MessageProtectionOrder.SignBeforeEncrypt&lt;/span&gt;&lt;span style="color: blue;"&gt;;&lt;/span&gt;&lt;span style="color: grey;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: black;"&gt;sec.DefaultAlgorithmSuite&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;SecurityAlgorithmSuite.Basic128&lt;/span&gt;&lt;span style="color: blue;"&gt;;&lt;/span&gt;&lt;span style="color: grey;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: black;"&gt;sec.EndpointSupportingTokenParameters.Signed.Add(sec.EndpointSupportingTokenParameters.Endorsing[&lt;/span&gt;&lt;span style="color: maroon;"&gt;0&lt;/span&gt;&lt;span style="color: black;"&gt;])&lt;/span&gt;&lt;span style="color: blue;"&gt;;&lt;/span&gt;&lt;span style="color: grey;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: black;"&gt;sec.EndpointSupportingTokenParameters.Endorsing.Clear()&lt;/span&gt;&lt;span style="color: blue;"&gt;;&lt;/span&gt;&lt;span style="color: grey;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: black;"&gt;sec.EnableUnsecuredResponse&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;true;&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: black;"&gt;res.Elements.Add(&lt;/span&gt;&lt;span style="color: blue;"&gt;new&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;CustomTextMessageBindingElement())&lt;/span&gt;&lt;span style="color: blue;"&gt;;&lt;/span&gt;&lt;span style="color: grey;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: black;"&gt;res.Elements.Add(&lt;/span&gt;&lt;span style="color: blue;"&gt;new&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;HttpTransportBindingElement())&lt;/span&gt;&lt;span style="color: blue;"&gt;;&lt;/span&gt;&lt;span style="color: grey;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;return&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;res&lt;/span&gt;&lt;span style="color: blue;"&gt;;&lt;/span&gt;&lt;span style="color: grey;"&gt; &lt;/span&gt;&lt;span style="color: black;"&gt;}&lt;/span&gt; &lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
At this point everything was smelling like roses – I was able to get a real response from the server instead of the error above.&lt;br /&gt;
&lt;br /&gt;
However from a reason unknown to me at the time the Wcf client was rejecting the response with this error:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background-color: #eeeeee; padding-left: 10px; padding-right: 3px;"&gt;&lt;br /&gt;
Message security verification failed.&lt;br /&gt;
&lt;br /&gt;
"End element 'Reference' from namespace '&lt;a href="http://www.w3.org/2000/09/xmldsig#'"&gt;http://www.w3.org/2000/09/xmldsig#'&lt;/a&gt; expected. Found element 'ds:DigestMethod' from namespace '&lt;a href="http://www.w3.org/2000/09/xmldsig#'"&gt;http://www.w3.org/2000/09/xmldsig#'&lt;/a&gt;. Line 1, position 2075."&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
Here is the relevant response section:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background-color: #eeeeee; padding-left: 10px; padding-right: 3px;"&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="code"&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:Signature&lt;/span&gt;&lt;span style="color: red;"&gt; Id&lt;/span&gt;&lt;span style="color: blue;"&gt;="_1"&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:SignedInfo&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ... &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:Reference&lt;/span&gt;&lt;span style="color: red;"&gt; URI&lt;/span&gt;&lt;span style="color: blue;"&gt;="_5002"&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:Transforms&lt;/span&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:DigestMethod&lt;/span&gt;&lt;span style="color: red;"&gt; Algorithm&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://www.w3.org/2000/09/xmldsig#sha1"&lt;/span&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:DigestValue&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt;2jmj7l5rSw0yVb/vlWAYkK/YBwk=&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:DigestValue&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:Reference&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ... &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:SignedInfo&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;ds:Signature&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;br /&gt;
&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
This is the response signature, which seems pretty straight forward. Why would Wcf throw an exception?&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Analysis&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
If you take a closer look at the response above, you can see how it contains an empty “transforms” element. A non empty one looks like this:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background-color: #eeeeee; padding-left: 10px; padding-right: 3px;"&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class="code"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;Reference&lt;/span&gt;&lt;span style="color: red;"&gt; URI&lt;/span&gt;&lt;span style="color: blue;"&gt;="#_0"&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;Transforms&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;Transform&lt;/span&gt;&lt;span style="color: red;"&gt; Algorithm&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://www.w3.org/2001/10/xml-exc-c14n#"&lt;/span&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;Transforms&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;DigestMethod&lt;/span&gt;&lt;span style="color: red;"&gt; Algorithm&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://www.w3.org/2000/09/xmldsig#sha1"&lt;/span&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;DigestValue&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt;jcLdOx6w1477YMoCJR8TJQRJuKw=&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;DigestValue&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;Reference&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
This is the framework code that parses the signature transforms element:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background-color: #eeeeee; padding-left: 10px; padding-right: 3px;"&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class="code"&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;void&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;ReadFrom(XmlDictionaryReader&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;reader,&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;TransformFactory&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;transformFactory,&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;DictionaryManager&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;dictionaryManager)&lt;/span&gt;&lt;span style="color: grey;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: black;"&gt;{&lt;/span&gt;&lt;span style="color: grey;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: black;"&gt;reader.MoveToStartElement(dictionaryManager.XmlSignatureDictionary.Transforms,&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;dictionaryManager.XmlSignatureDictionary.Namespace)&lt;/span&gt;&lt;span style="color: blue;"&gt;;&lt;/span&gt;&lt;span style="color: grey;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: black;"&gt;reader.Read()&lt;/span&gt;&lt;span style="color: blue;"&gt;;&lt;/span&gt;&lt;span style="color: grey;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;while&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;(reader.IsStartElement(dictionaryManager.XmlSignatureDictionary.Transform,&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;dictionaryManager.XmlSignatureDictionary.Namespace))&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: black;"&gt;{&lt;/span&gt;&lt;span style="color: grey;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: darkgreen;"&gt;//handle transformation &lt;br /&gt;
&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: black;"&gt;}&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: black;"&gt;reader.MoveToContent()&lt;/span&gt;&lt;span style="color: blue;"&gt;;&lt;/span&gt;&lt;span style="color: grey;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: black;"&gt;reader.ReadEndElement()&lt;/span&gt;&lt;span style="color: blue;"&gt;;&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: darkgreen;"&gt;// Transforms&amp;nbsp; &lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: black;"&gt;...&lt;/span&gt;&lt;span style="color: grey;"&gt; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: black;"&gt;}&lt;/span&gt; &lt;/div&gt;&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
There are 3 cases that this code is supposed to handle:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;In case the transforms element has childs (as in the last snippet before the above code), then the Read() call would put the cursor on the first child element (“transform” in singular). The while loop will end at the closing “transforms” element which is aligned with the following ReadEndElement() call.&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;In case there are no childs but there is a separate closing element: &lt;br /&gt;
&lt;span style="color: blue;"&gt;       &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background-color: #eeeeee; padding-left: 10px; padding-right: 3px;"&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class="code"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;Reference&lt;/span&gt;&lt;span style="color: red;"&gt; URI&lt;/span&gt;&lt;span style="color: blue;"&gt;="#_0"&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;Transforms&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;Transforms&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;DigestMethod&lt;/span&gt;&lt;span style="color: red;"&gt; Algorithm&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://www.w3.org/2000/09/xmldsig#sha1"&lt;/span&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;Reference&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt;&amp;nbsp;&lt;/span&gt; &lt;/div&gt;&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
then Read() would put us on the closing element, and since we will not enter the loop ReadEndElement will be right again.&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;In case of an empty element: &lt;br /&gt;
&lt;br /&gt;
&lt;div style="background-color: #eeeeee; padding-left: 10px; padding-right: 3px;"&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class="code"&gt;&amp;nbsp;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;Reference&lt;/span&gt;&lt;span style="color: red;"&gt; URI&lt;/span&gt;&lt;span style="color: blue;"&gt;="#_0"&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;Transforms /&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &lt;/span&gt;&lt;span style="color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;DigestMethod&lt;/span&gt;&lt;span style="color: red;"&gt; Algorithm&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://www.w3.org/2000/09/xmldsig#sha1"&lt;/span&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;Reference&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
the Read() would advance us behind the transformations tag! The next tag is the opening DigestMethod which of course fails for ReadEndElement(). &lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_6DvmzgV-o20/TTC7cbKGW9I/AAAAAAAABYw/5Iw6696ANGM/s1600/transform.jpg" imageanchor="1" style=""&gt;&lt;img border="0" height="208" width="400" src="http://2.bp.blogspot.com/_6DvmzgV-o20/TTC7cbKGW9I/AAAAAAAABYw/5Iw6696ANGM/s400/transform.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
So the case of an empty transforms element is responsible for the interoperability bug.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Workaround&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
If you are in a position to change the output of the Java server then various workarounds may apply. But what if you can’t?&lt;br /&gt;
&lt;br /&gt;
The only real solution seems to be implementing the relevant ws-security portion by yourself. Here I show how to do the bare minimum of such a scheme – use the wcf security stack for the sending of the message and decrypting the response by ourselves. The missing piece will be the signature validation, which is very important in production but we can continue with development even without it as at least we get a readable response.&lt;br /&gt;
&lt;br /&gt;
My solution involves using a custom message encoder. I have used the Wcf SDK message encoder sample as a template. When the response comes back to the encoder it decrypts it and remove the security from it before passing it to the upstream channel.&amp;nbsp; To make sure the security channel will not fail (due to the now unsecured response) we verify our binding has EnableUnsecuredResponse&lt;span style="color: grey;"&gt;&amp;nbsp; &lt;/span&gt;set to true.&lt;br /&gt;
&lt;br /&gt;
Here is how the encoder code looks like:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background-color: #eeeeee; padding-left: 10px; padding-right: 3px;"&gt;&lt;div class="code"&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;override&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;Message&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;ReadMessage(&lt;/span&gt;&lt;span style="color: #2b91af;"&gt;Stream&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;stream,&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;int&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;maxSizeOfHeaders,&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;string&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;contentType)&lt;/span&gt;&lt;span style="color: grey;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: black;"&gt;{&lt;/span&gt;&lt;span style="color: grey;"&gt; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;var&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;sr&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;new&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #2b91af;"&gt;StreamReader&lt;/span&gt;&lt;span style="color: black;"&gt;(stream)&lt;/span&gt;&lt;span style="color: blue;"&gt;;&lt;/span&gt;&lt;span style="color: grey;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;var&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;wireResponse&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;sr.ReadToEnd()&lt;/span&gt;&lt;span style="color: blue;"&gt;;&lt;/span&gt;&lt;span style="color: grey;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;var&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;logicalResponse&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;GetDecryptedResponse(wireResponse)&lt;/span&gt;&lt;span style="color: blue;"&gt;;&lt;/span&gt;&lt;span style="color: grey;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: black;"&gt;logicalResponse&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #2b91af;"&gt;String&lt;/span&gt;&lt;span style="color: black;"&gt;.Format(&lt;/span&gt;&lt;span style="color: grey;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @"&amp;lt;s:Envelope xmlns:s=""http://schemas.xmlsoap.org/soap/envelope/""&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:Body&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/s:Body&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/s:Envelope&amp;gt;"&lt;/span&gt;&lt;span style="color: black;"&gt;,&lt;/span&gt;&lt;span style="color: grey;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: black;"&gt;logicalResponse)&lt;/span&gt;&lt;span style="color: blue;"&gt;;&lt;/span&gt;&lt;span style="color: grey;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #2b91af;"&gt;XmlReader&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;reader&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #2b91af;"&gt;XmlReader&lt;/span&gt;&lt;span style="color: black;"&gt;.Create(&lt;/span&gt;&lt;span style="color: blue;"&gt;new&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #2b91af;"&gt;StringReader&lt;/span&gt;&lt;span style="color: black;"&gt;(logicalResponse))&lt;/span&gt;&lt;span style="color: blue;"&gt;;&lt;/span&gt;&lt;span style="color: grey;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;return&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;Message.CreateMessage(reader,&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;maxSizeOfHeaders,&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;MessageVersion.Soap11)&lt;/span&gt;&lt;span style="color: blue;"&gt;;&lt;/span&gt;&lt;span style="color: grey;"&gt; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: black;"&gt;}&lt;/span&gt;&lt;span style="color: grey;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;private&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;string&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;GetDecryptedResponse(&lt;/span&gt;&lt;span style="color: blue;"&gt;string&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;encryptedResponse)&lt;/span&gt;&lt;span style="color: grey;"&gt; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: black;"&gt;{&lt;/span&gt;&lt;span style="color: grey;"&gt; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;var&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;doc&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;new&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #2b91af;"&gt;XmlDocument&lt;/span&gt;&lt;span style="color: black;"&gt;()&lt;/span&gt;&lt;span style="color: blue;"&gt;;&lt;/span&gt;&lt;span style="color: grey;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: black;"&gt;doc.LoadXml(encryptedResponse)&lt;/span&gt;&lt;span style="color: blue;"&gt;;&lt;/span&gt;&lt;span style="color: grey;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;var&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;cipherNode&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;doc.SelectSingleNode(&lt;/span&gt;&lt;span style="color: grey;"&gt;"//*[local-name(.)='Body']//*[local-name(.)='CipherValue']"&lt;/span&gt;&lt;span style="color: black;"&gt;)&lt;/span&gt;&lt;span style="color: blue;"&gt;;&lt;/span&gt;&lt;span style="color: grey;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;byte&lt;/span&gt;&lt;span style="color: black;"&gt;[]&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;cypher&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;Convert.FromBase64String(cipherNode.InnerText)&lt;/span&gt;&lt;span style="color: blue;"&gt;;&lt;/span&gt;&lt;span style="color: grey;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;byte&lt;/span&gt;&lt;span style="color: black;"&gt;[]&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;key&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;GetEncryptingKey()&lt;/span&gt;&lt;span style="color: blue;"&gt;;&lt;/span&gt;&lt;span style="color: grey;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;byte&lt;/span&gt;&lt;span style="color: black;"&gt;[]&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;iv&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;GetIV(cypher)&lt;/span&gt;&lt;span style="color: blue;"&gt;;&lt;/span&gt;&lt;span style="color: grey;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;var&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;AesManagedAlg&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;new&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;AesCryptoServiceProvider()&lt;/span&gt;&lt;span style="color: blue;"&gt;;&lt;/span&gt;&lt;span style="color: grey;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: black;"&gt;AesManagedAlg.KeySize&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: maroon;"&gt;128&lt;/span&gt;&lt;span style="color: blue;"&gt;;&lt;/span&gt;&lt;span style="color: grey;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: black;"&gt;AesManagedAlg.Key&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;key&lt;/span&gt;&lt;span style="color: blue;"&gt;;&lt;/span&gt;&lt;span style="color: grey;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: black;"&gt;AesManagedAlg.IV&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;iv&lt;/span&gt;&lt;span style="color: blue;"&gt;;&lt;/span&gt;&lt;span style="color: grey;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;var&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;body&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;ExtractIVAndDecrypt(AesManagedAlg,&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;cypher,&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: maroon;"&gt;0&lt;/span&gt;&lt;span style="color: black;"&gt;,&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;cypher.Length)&lt;/span&gt;&lt;span style="color: blue;"&gt;;&lt;/span&gt;&lt;span style="color: grey;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;return&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;UTF8Encoding.UTF8.GetString(body)&lt;/span&gt;&lt;span style="color: blue;"&gt;;&lt;/span&gt;&lt;span style="color: grey;"&gt; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: black;"&gt;}&lt;/span&gt; &lt;/div&gt;&lt;br /&gt;
&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
So we find the ciphered portion of the message and decrypt it. We then use it to construct a new unsecured message which we will pass along in the pipeline. Here this is done in a dirty way which hard codes the soap11 envelope. &lt;br /&gt;
&lt;br /&gt;
But where do we get the security key to decrypt the message from?&lt;br /&gt;
&lt;br /&gt;
This key is encrypted in our request:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background-color: #eeeeee; padding-left: 10px; padding-right: 3px;"&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="code"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;e:EncryptedKey&lt;/span&gt;&lt;span style="color: red;"&gt; Id&lt;/span&gt;&lt;span style="color: blue;"&gt;="uuid-7674d043-9a35-495d-a4dc-27daee955237-1"&lt;/span&gt;&lt;span style="color: red;"&gt; xmlns:e&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://www.w3.org/2001/04/xmlenc#"&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; …&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;e:CipherData&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;e:CipherValue&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt;HQ0UzEZnc9lq...&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;e:CipherValue&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;e:CipherData&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="code"&gt;&lt;span style="color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;e:EncryptedKey&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;br /&gt;
&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
We cannot decrypt it since it is encrypted with the server public key and we do not have the private one. However the security channel must keep reference to this key somewhere so that it will be able to decrypt the response (which it would do anyway unless the empty transformation bug). We need to use some reflection tricks to get the session key:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background-color: #eeeeee; padding-left: 10px; padding-right: 3px;"&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="code"&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;private&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;void&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;SaveEncryptionKey(Message&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;message)&lt;/span&gt;&lt;span style="color: grey;"&gt; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: black;"&gt;{&lt;/span&gt;&lt;span style="color: grey;"&gt; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;var&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;secHeaderType&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;message.GetType().GetField(&lt;/span&gt;&lt;span style="color: grey;"&gt;"securityHeader"&lt;/span&gt;&lt;span style="color: black;"&gt;,&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: black;"&gt;BindingFlags.NonPublic&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;|&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;BindingFlags.Instance)&lt;/span&gt;&lt;span style="color: blue;"&gt;;&lt;/span&gt;&lt;span style="color: grey;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;var&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;secHeader&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;secHeaderType.GetValue(message)&lt;/span&gt;&lt;span style="color: blue;"&gt;;&lt;/span&gt;&lt;span style="color: grey;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;var&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;encTokenType&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;secHeader.GetType().BaseType.BaseType.GetField(&lt;/span&gt;&lt;span style="color: grey;"&gt;"encryptingToken"&lt;/span&gt;&lt;span style="color: black;"&gt;,&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: black;"&gt;BindingFlags.NonPublic&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;|&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;BindingFlags.Instance)&lt;/span&gt;&lt;span style="color: blue;"&gt;;&lt;/span&gt;&lt;span style="color: grey;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;var&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;token&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;(WrappedKeySecurityToken)encTokenType.GetValue(secHeader)&lt;/span&gt;&lt;span style="color: blue;"&gt;;&lt;/span&gt;&lt;span style="color: grey;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;var&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;securityKey&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;(InMemorySymmetricSecurityKey)token.SecurityKeys[&lt;/span&gt;&lt;span style="color: maroon;"&gt;0&lt;/span&gt;&lt;span style="color: black;"&gt;]&lt;/span&gt;&lt;span style="color: blue;"&gt;;&lt;/span&gt;&lt;span style="color: grey;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;var&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;symmetricKey&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;securityKey.GetType().GetField(&lt;/span&gt;&lt;span style="color: grey;"&gt;"symmetricKey"&lt;/span&gt;&lt;span style="color: black;"&gt;,&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: black;"&gt;BindingFlags.NonPublic&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;|&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;BindingFlags.Instance)&lt;/span&gt;&lt;span style="color: blue;"&gt;;&lt;/span&gt;&lt;span style="color: grey;"&gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;this&lt;/span&gt;&lt;span style="color: black;"&gt;.key&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;(&lt;/span&gt;&lt;span style="color: blue;"&gt;byte&lt;/span&gt;&lt;span style="color: black;"&gt;[])symmetricKey.GetValue(securityKey)&lt;/span&gt;&lt;span style="color: blue;"&gt;;&lt;/span&gt;&lt;span style="color: grey;"&gt; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: black;"&gt;}&lt;/span&gt; &lt;/div&gt;&lt;br /&gt;
&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
The full &lt;a href="http://cid-4999e5d00449874d.office.live.com/self.aspx/.Public/EmptyTransformationWsitInterop.rar"&gt;source code is here&lt;/a&gt;. It will not run since for privacy reasons I did not use the real wsdl / certificates. But it can be used as a reference in case you encounter a similar situation.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1482776199578137808-6280671564772074978?l=webservices20.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/pxw3k1nnzt_MTIQbhQ6DmEqruKk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pxw3k1nnzt_MTIQbhQ6DmEqruKk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/pxw3k1nnzt_MTIQbhQ6DmEqruKk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pxw3k1nnzt_MTIQbhQ6DmEqruKk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/WebServices20/~4/QIsYoN6CRtI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://webservices20.blogspot.com/feeds/6280671564772074978/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1482776199578137808&amp;postID=6280671564772074978" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1482776199578137808/posts/default/6280671564772074978?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1482776199578137808/posts/default/6280671564772074978?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/WebServices20/~3/QIsYoN6CRtI/security-interop-gotcha-empty-signature.html" title="Security interop gotcha: Empty signature transformation" /><author><name>Yaron Naveh (MVP)</name><uri>http://www.blogger.com/profile/11793800386245798442</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://2.bp.blogspot.com/_6DvmzgV-o20/TKczhOA8ODI/AAAAAAAABWI/y6trZ_YyLPU/S220/me_small.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_6DvmzgV-o20/TTC7cbKGW9I/AAAAAAAABYw/5Iw6696ANGM/s72-c/transform.jpg" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://webservices20.blogspot.com/2011/01/security-interop-gotcha-empty-signature.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEcEQHkzcCp7ImA9Wx9RFkw.&quot;"><id>tag:blogger.com,1999:blog-1482776199578137808.post-4623358605718022998</id><published>2010-12-17T22:00:00.000+02:00</published><updated>2010-12-17T22:00:01.788+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-17T22:00:01.788+02:00</app:edited><title>Wcf trick: Dynamically change proxy address</title><content type="html">It is quite common to have a few service environments, for example one for testing and one for production. One way to switch a Wcf client from one environment to another is by changing the address in app.config:&lt;br /&gt;
&lt;br /&gt;
&lt;fieldset style="background-color: #EEEEEE; font-family:courier new; font-size:100%;"&gt;&amp;lt;endpoint address="http://localhost/Service.svc" ... /&amp;gt;&lt;br /&gt;
&lt;/fieldset&gt;&lt;br /&gt;
However sometime we need to dynamically change the address from code due to some logic.&lt;br /&gt;
The naive approach would be to do something like this:&lt;br /&gt;
&lt;br /&gt;
&lt;fieldset style="background-color: #EEEEEE; font-family:courier new; font-size:100%;"&gt;MyService client = new MyService("WSHttpBinding_MyService", &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;"http://new_server/Service.svc")&lt;br /&gt;
&lt;/fieldset&gt;&lt;br /&gt;
The reason this is naive is that app.config may contain additional information on the endpoint, namely its identity and headers:&lt;br /&gt;
&lt;br /&gt;
&lt;fieldset style="background-color: #EEEEEE; font-family:courier new; font-size:100%;"&gt;&amp;lt;endpoint address="http://localhost/Service.svc" Name="WSHttpBinding_MyService" ...&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;    &amp;lt;identity&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;     &amp;lt;dns value="&lt;b&gt;ServerIdentity&lt;/b&gt;"/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;    &amp;lt;/identity&amp;gt;&lt;br /&gt;
   &amp;lt;/endpoint&amp;gt;&lt;br /&gt;
&lt;/fieldset&gt;&lt;br /&gt;
when we create the proxy with a different endpoint in the constructor we override the identity information. This may result in &lt;a href="http://webservices20.blogspot.com/2008/10/cryptic-wcf-error-messages-part-3-of-n.html"&gt;this error&lt;/a&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;fieldset style="background-color: #EEEEEE; font-family:courier new; font-size:100%;"&gt;Identity check failed for outgoing message. The expected DNS identity of the remote endpoint was 'localhost' but the remote endpoint provided DNS claim 'ServerIdentity'. If this is a legitimate remote endpoint, you can fix the problem by explicitly specifying DNS identity 'ServerIdentity' as the Identity property of EndpointAddress when creating channel proxy&lt;br /&gt;
&lt;/fieldset&gt;&lt;br /&gt;
&lt;b&gt;The solution&lt;/b&gt;&lt;br /&gt;
Create the proxy normally. Then separately assign the new endpoint address keeping the identity and header values:&lt;br /&gt;
&lt;br /&gt;
&lt;fieldset style="background-color: #EEEEEE; font-family:courier new; font-size:100%;"&gt;proxy.Endpoint.Address = new EndpointAddress(&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;new Uri("http://new_server/Service.svc"), &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;proxy.Endpoint.Address.Identity, &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;proxy.Endpoint.Address.Headers);&lt;br /&gt;
&lt;/fieldset&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1482776199578137808-4623358605718022998?l=webservices20.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/T7orm4N_xbSjQ3tG63ykRrrpwGA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/T7orm4N_xbSjQ3tG63ykRrrpwGA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/T7orm4N_xbSjQ3tG63ykRrrpwGA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/T7orm4N_xbSjQ3tG63ykRrrpwGA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/WebServices20/~4/XWiYZ2Hyq-Q" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://webservices20.blogspot.com/feeds/4623358605718022998/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1482776199578137808&amp;postID=4623358605718022998" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1482776199578137808/posts/default/4623358605718022998?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1482776199578137808/posts/default/4623358605718022998?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/WebServices20/~3/XWiYZ2Hyq-Q/wcf-trick-dynamically-change-proxy.html" title="Wcf trick: Dynamically change proxy address" /><author><name>Yaron Naveh (MVP)</name><uri>http://www.blogger.com/profile/11793800386245798442</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://2.bp.blogspot.com/_6DvmzgV-o20/TKczhOA8ODI/AAAAAAAABWI/y6trZ_YyLPU/S220/me_small.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://webservices20.blogspot.com/2010/12/wcf-trick-dynamically-change-proxy.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak4EQX0-fSp7ImA9Wx9REUo.&quot;"><id>tag:blogger.com,1999:blog-1482776199578137808.post-5434629406611999687</id><published>2010-12-12T20:35:00.000+02:00</published><updated>2010-12-12T20:35:00.355+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-12T20:35:00.355+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Web Services Interoperability" /><category scheme="http://www.blogger.com/atom/ns#" term="Security" /><title>Wcf and WebLogic security interoperability</title><content type="html">Yesterday I have mentioned some recent &lt;a href="http://webservices20.blogspot.com/2010/12/web-services-interoperability-white.html"&gt;white papers about web services interoperability&lt;/a&gt;.&lt;br /&gt;
Today I've stumbled in another recent article which shows &lt;a href="http://www.oracle.com/technetwork/articles/soa/oracle-msft-interoperate-183511.html"&gt;username over certificate interoperability&lt;/a&gt; between Oracle WebLogic Server 11g and Microsoft.NET WCF 4.0. This article has step by step instructions to make it happen.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1482776199578137808-5434629406611999687?l=webservices20.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/tQ8Et1VcVreoLOLG7JxlACvL-Kg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tQ8Et1VcVreoLOLG7JxlACvL-Kg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/tQ8Et1VcVreoLOLG7JxlACvL-Kg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tQ8Et1VcVreoLOLG7JxlACvL-Kg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/WebServices20/~4/96RSlmeedJk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://webservices20.blogspot.com/feeds/5434629406611999687/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1482776199578137808&amp;postID=5434629406611999687" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1482776199578137808/posts/default/5434629406611999687?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1482776199578137808/posts/default/5434629406611999687?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/WebServices20/~3/96RSlmeedJk/wcf-and-weblogic-security.html" title="Wcf and WebLogic security interoperability" /><author><name>Yaron Naveh (MVP)</name><uri>http://www.blogger.com/profile/11793800386245798442</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://2.bp.blogspot.com/_6DvmzgV-o20/TKczhOA8ODI/AAAAAAAABWI/y6trZ_YyLPU/S220/me_small.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://webservices20.blogspot.com/2010/12/wcf-and-weblogic-security.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0MHQ388cCp7ImA9Wx9REEQ.&quot;"><id>tag:blogger.com,1999:blog-1482776199578137808.post-2257318445024390379</id><published>2010-12-11T22:30:00.000+02:00</published><updated>2010-12-11T22:30:32.178+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-11T22:30:32.178+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Web Services Interoperability" /><category scheme="http://www.blogger.com/atom/ns#" term="Security" /><title>Web services interoperability white papers</title><content type="html">A few years ago a white paper on web services interoperability would start with "turn off secure conversation" or "avoid the following types". A recent set of white papers published by Microsoft shows the today all vendors are much more mature and ready for real world interoperability.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/58b8dc76-7145-4461-a014-4b268bd69ee2"&gt;Abu Obeida&lt;/a&gt; and &lt;a href="http://blogs.msdn.com/b/interoperability/archive/2010/11/10/ws-i-completes-web-services-interoperability-standards-work.aspx"&gt;Mike Champion&lt;/a&gt; from Microsoft announced recently the below articles. I recommend this reading for those of you who need to write interoperable web services. Of course not each article is relevant for each interop scenario so guess what? I've read them for you so you can decide which ones are relevant for you.&lt;br /&gt;
&lt;br /&gt;
&lt;li&gt; &lt;b&gt;&lt;a href="http://msdn.microsoft.com/en-us/netframework/gg413252.aspx"&gt;Data types interoperability between .NET and Java&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;
&lt;a href="http://weblogs.thinktecture.com/cweyer/"&gt;Christian Weyer&lt;/a&gt; and &lt;a href="http://blog.geeksdiary.com/"&gt;Buddhike de Silva&lt;/a&gt; have listed most types you might ever want to use with web services and verified their interoperability status. This is a &lt;b&gt;must read&lt;/b&gt; for every public facing web service developer. &lt;br /&gt;
One thing that I am missing here though is the Axis2 java stack which is very popular. Also I'm confused by the check on WebSphere - as an application server you can use various stacks on it so I'm not sure which one was used. I assume Wcf was used on the .Net side (".Net 4" is specified) and I'm very curious if the data contract was able to cope with all scenarios or was xml serialization required in some cases. Generally data contract are optimized to enforce "best practice" which is sometimes counterproductive for interoperability.&lt;br /&gt;
&lt;br /&gt;
The conclusion is very promising - good interoperability exists in almost all scenarios. One important reminder is the lack of interoperability with Hashtable and some of the generic types. &lt;br /&gt;
&lt;br /&gt;
&lt;li&gt; &lt;b&gt;&lt;a href="http://msdn.microsoft.com/en-us/netframework/gg413253.aspx"&gt;Security Interoperability Guideline between WCF-WIF and Oracle WebLogic&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://weblogs.asp.net/gsusx/"&gt;Jesus Rodriguez&lt;/a&gt; wrote a great article on ws-security interop between Wcf and Oracle WebLogic. Naturally the article dives into the ws-security details and is very technical. It proves that X.509 message security is a good option for interoperability. While jesus shows how to achieve federation interoperability via SAML and WS-Trust, it is clear that there is still a way to go here as a holder-of-key scenario is still not possible. I have not tested it myself but hopefully bearer tokens should also work well with these parties. The article does not mention it as it deals with message security while bearer tokens are a mix of message and transport.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;li&gt; &lt;b&gt;&lt;a href="http://msdn.microsoft.com/en-us/netframework/gg413262.aspx"&gt;Security Interoperability Guideline between WCF-WIF and IBM WebSphere Application Server&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Jesus adds another good one and this time on interoperability between Wcf and WebSphere. The username and x.509 scenarios work pretty well. The article mentions that WS-Trust interoperability is possible, but does not give the details, so I'm not sure if it is a mistake in the upload or if it really required some tweaks which were out of scope. Either way this is yet another proof that there is still a way to go with federation interoperability. Such security scheme will be very popular in the cloud era so hopefully all vendors will keep investing in it. As it stands now Wcf+Wif have great support for the related scenarios so I'll report on any news from the other vendors.&lt;br /&gt;
&lt;br /&gt;
As a side note, While MTOM interoperability is possible here, I have seen in the past a few gotchas so hopefully a future paper will cover that up (I'll try to write about it myself actually).&lt;br /&gt;
&lt;br /&gt;
&lt;li&gt; &lt;b&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ff709807.aspx"&gt;Standards-Based Interoperability between SAP NetWeaver and Microsoft .NET Framework&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;
A rich set of scenarios are working in this case, including security and MTOM. It is a little disappointing that a basic scenario like custom headers only partially pass, but NetWeaver is an opinionated framework that expose its users only what is relevant for them.&lt;br /&gt;
&lt;br /&gt;
&lt;li&gt; &lt;b&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ff842400.aspx"&gt;Metro to WCF Interoperability&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;
The combination of Metro and Wcf shows off the richest set of working interoperability scenarios. This is not surprising considering the fact that one of the goals of WSIT (Metro's security stack) is interoperability with Wcf.&lt;br /&gt;
&lt;br /&gt;
To conclude, all articles are very interesting and show that interoperability is a reality.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1482776199578137808-2257318445024390379?l=webservices20.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/G0sNss_n9pPxZdN4KWdZsuPFMRM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/G0sNss_n9pPxZdN4KWdZsuPFMRM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/G0sNss_n9pPxZdN4KWdZsuPFMRM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/G0sNss_n9pPxZdN4KWdZsuPFMRM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/WebServices20/~4/kjd9z8gsd14" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://webservices20.blogspot.com/feeds/2257318445024390379/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1482776199578137808&amp;postID=2257318445024390379" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1482776199578137808/posts/default/2257318445024390379?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1482776199578137808/posts/default/2257318445024390379?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/WebServices20/~3/kjd9z8gsd14/web-services-interoperability-white.html" title="Web services interoperability white papers" /><author><name>Yaron Naveh (MVP)</name><uri>http://www.blogger.com/profile/11793800386245798442</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://2.bp.blogspot.com/_6DvmzgV-o20/TKczhOA8ODI/AAAAAAAABWI/y6trZ_YyLPU/S220/me_small.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://webservices20.blogspot.com/2010/12/web-services-interoperability-white.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUQGQ3g6fyp7ImA9Wx9SFEU.&quot;"><id>tag:blogger.com,1999:blog-1482776199578137808.post-5209447651509973514</id><published>2010-12-04T20:28:00.000+02:00</published><updated>2010-12-04T20:28:42.617+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-04T20:28:42.617+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="wif" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight" /><category scheme="http://www.blogger.com/atom/ns#" term="ws-security" /><category scheme="http://www.blogger.com/atom/ns#" term="federation" /><title>Silverlight 5: More details on WS-Trust support</title><content type="html">Yesterday Microsoft had announced &lt;a href="http://www.microsoft.com/silverlight/future/"&gt;Silverlight 5 Beta&lt;/a&gt; to be released in the first half of 2011. Sure, there are plenty of &lt;a href="http://weblogs.asp.net/scottgu/archive/2010/12/02/announcing-silverlight-5.aspx"&gt;great features&lt;/a&gt; there, but if you are readers of my blog I'm sure you are especially interested in a particular one. Here is a hint (click to enlarge):&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_6DvmzgV-o20/TPqH35IaDXI/AAAAAAAABYU/MYpt1QEcflg/s1600/sl5.png" imageanchor="1" style=""&gt;&lt;img border="0" height="129" width="400" src="http://2.bp.blogspot.com/_6DvmzgV-o20/TPqH35IaDXI/AAAAAAAABYU/MYpt1QEcflg/s400/sl5.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Yes, more of the WS-* stuff is making its way into SL.&lt;br /&gt;
&lt;br /&gt;
While this is all good news, the announcement is missing more details as for what exactly will be supported. This post will analyze the status of SL &amp; WS-Trust in SL 4 + following unofficial projects, and based on the missing gaps I will try to estimate what the upcoming release &lt;b&gt;*might*&lt;/b&gt; include.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Background - Federation and WS-Trust&lt;/b&gt;&lt;br /&gt;
This post is not aimed to be an introduction to &lt;a href="http://msdn.microsoft.com/en-us/library/ms730908.aspx"&gt;federation&lt;/a&gt; or to &lt;a href="http://msdn.microsoft.com/en-us/security/aa570351.aspx"&gt;claims based programming&lt;/a&gt;, but as a quick reminder here is the general flow:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_6DvmzgV-o20/TPqBijOcWsI/AAAAAAAABYE/8xl5S4hIWS0/s1600/sts.png" imageanchor="1" style=""&gt;&lt;img border="0" height="376" width="400" src="http://3.bp.blogspot.com/_6DvmzgV-o20/TPqBijOcWsI/AAAAAAAABYE/8xl5S4hIWS0/s400/sts.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Our environment contains:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Application Service.&lt;/b&gt; This service contains some operations that clients want to consume. The service will only accept client requests that embed a token gotten from the STS (usually a Saml token, which is an Xml token format). One reason might be that the service does not want to deal with authentication and leaves this mission to the STS which is developed by a dedicated team.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;STS.&lt;/b&gt; STS role is to authenticate clients and generate tokens that the client can present to the service. This is a little oversimplified, mainly since there are some STS that only aim to provide client identity, and some that provide protection over the resource (service), and in many cases both of them will be used.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Client.&lt;/b&gt; The client is any application (client or server) that wants to consume the application service and needs to get a token from the STS first. The client is of course not necessarily using Silverlight.&lt;br /&gt;
&lt;br /&gt;
Needless to say is that Wcf is a great framework for such scenarios.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;How Silverlight fits this picture?&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
A lot of organizations already have security infrastructure that contains STS. They would like SL applications to work with it also, mainly so SL applications can call other web services which expects a Saml identity.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;What is the current status of SL &amp; WS-Trust (SL4+ unofficial projects)&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Until the beginning of 2010 there was no built-in support for such scenarios, and some &lt;a href="http://www.leastprivilege.com/UsingSilverlightToAccessWIFSecuredWCFServicesPart2.aspx"&gt;creative solutions&lt;/a&gt; were used. Earlier this year Caleb Baker had disclosed a project that brings WIF support to SL as part of the &lt;a href="http://blogs.msdn.com/b/vbertocci/archive/2010/03/15/identity-developer-training-kit-march-2010-update-wif-silverlight-wif-wcf-on-windows-azure.aspx"&gt;identity developer training kit&lt;/a&gt;. WIF is (among other stuff) a set of extensions to WCF that makes working with claims easier. Since Saml is very aligned with the claims model, and STS usualy emits Saml over WS-Trust protocol, this effectively brought WS-Trust support for SL for the first time.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;What *might* SL5 support?&lt;/b&gt;&lt;br /&gt;
In other words we need to ask what is missing after the mentioned WIF support.&lt;br /&gt;
&lt;br /&gt;
&lt;li&gt; As far as I know the mentioned support was not official but a part of a training kit. Many organization will not use it until it is official.&lt;br /&gt;
&lt;br /&gt;
&lt;li&gt; WIF generally work on XP only. I say "generally" because the WIF/SL seems to be standalone so I'm not sure if that's the case with it also. Anyway since SL is not windows-only we will probably get this subset of WIF on all platforms.&lt;br /&gt;
&lt;br /&gt;
&lt;li&gt; WIF works well, but it is a different programming model than the Wcf WSFederation binding. Possibly Microsoft will consider supporting the native Wcf model as well.&lt;br /&gt;
&lt;br /&gt;
&lt;li&gt; STS is not limited to bearer tokens as the current WIF implementation is. This is actually an SL limitation since it only supports a subset of the Wcf bindings and most of the X.509 certificate settings are not supported. Microsoft might consider to support more bindings which might be used to communicate with the STS / application service.&lt;br /&gt;
&lt;br /&gt;
&lt;li&gt; The current training kit does not natively support multi leg federation (e.g. more than one STS), although dominick had published the a way to &lt;a href="http://www.leastprivilege.com/ModifyingTheSLWIFIntegrationBitsToSupportIssuedTokenCredentials.aspx"&gt;fix it&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Again, these are just my guesses / wish-list, but either way this is great news for every silverlight developer.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1482776199578137808-5209447651509973514?l=webservices20.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/FtarCPymKn1-ZZNiH8Mc0E7PMi0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/FtarCPymKn1-ZZNiH8Mc0E7PMi0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/FtarCPymKn1-ZZNiH8Mc0E7PMi0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/FtarCPymKn1-ZZNiH8Mc0E7PMi0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/WebServices20/~4/rvkW760OXx8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://webservices20.blogspot.com/feeds/5209447651509973514/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1482776199578137808&amp;postID=5209447651509973514" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1482776199578137808/posts/default/5209447651509973514?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1482776199578137808/posts/default/5209447651509973514?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/WebServices20/~3/rvkW760OXx8/silverlight-5-more-details-on-ws-trust.html" title="Silverlight 5: More details on WS-Trust support" /><author><name>Yaron Naveh (MVP)</name><uri>http://www.blogger.com/profile/11793800386245798442</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://2.bp.blogspot.com/_6DvmzgV-o20/TKczhOA8ODI/AAAAAAAABWI/y6trZ_YyLPU/S220/me_small.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_6DvmzgV-o20/TPqH35IaDXI/AAAAAAAABYU/MYpt1QEcflg/s72-c/sl5.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://webservices20.blogspot.com/2010/12/silverlight-5-more-details-on-ws-trust.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0UAQXg4eCp7ImA9Wx9TEkg.&quot;"><id>tag:blogger.com,1999:blog-1482776199578137808.post-7483747904605460626</id><published>2010-11-20T14:10:00.001+02:00</published><updated>2010-11-20T14:14:00.630+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-20T14:14:00.630+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="WSI" /><title>WsiHero: A GUI utility for web services WSI validation</title><content type="html">&lt;div style="border-bottom-width: 0px; float: left; margin-left: 25%; margin-right: 0px; padding-right: 0px;" width="115"&gt;&lt;a href="http://3.bp.blogspot.com/_6DvmzgV-o20/TObAle0Q2CI/AAAAAAAABXY/Bbt2vqsmwyA/s1600/hero_white.png" style="margin-right: 0px; padding-right: 0px;"&gt;&lt;img height="75" src="http://3.bp.blogspot.com/_6DvmzgV-o20/TObAle0Q2CI/AAAAAAAABXY/Bbt2vqsmwyA/s200/hero_white.png" style="border: 0px;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="float: left; margin-left: 0px; padding-left: 0px;"&gt;&lt;a href="http://4.bp.blogspot.com/_6DvmzgV-o20/TObAkj1mhBI/AAAAAAAABXU/H4ZaZXSq5Gw/s1600/hero_logo2.png" style="margin-left: 0px; padding-left: 0px;"&gt;&lt;img height="90" src="http://4.bp.blogspot.com/_6DvmzgV-o20/TObAkj1mhBI/AAAAAAAABXU/H4ZaZXSq5Gw/s320/hero_logo2.png" style="border: 0px;" width="240" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="clear: both;"&gt;&lt;/div&gt;&lt;br /&gt;
&lt;a href="http://cid-4999e5d00449874d.office.live.com/self.aspx/.Public/WsiHero.rar"&gt;Download WsiHero&lt;/a&gt; (3MB)&lt;br /&gt;
&lt;br /&gt;
Last week was an important moment for web services interoperability: &lt;a href="http://blogs.msdn.com/b/interoperability/archive/2010/11/10/ws-i-completes-web-services-interoperability-standards-work.aspx"&gt;WS-I has approved&lt;/a&gt; the final versions of Basic Profile (BP) 1.0 and 2.0 and of Reliable Secure Profile (RSP) 1.0. These profiles are a set of rules which web services vendors and consumers are expected to comply with in order to support interoperability. The original profile goes back to 2004 and was highly successful in improving web services interoperability.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;So how do we test our web services for WSI profiles compliance?&lt;/b&gt;&lt;br /&gt;
The &lt;a href="http://www.ws-i.org/"&gt;WSI site&lt;/a&gt; contains a &lt;a href="http://www.ws-i.org/deliverables/Default.aspx"&gt;deliverables section&lt;/a&gt; which has a few command line utilities to check the services. Using these command lines directly has some overhead like a learning curve for all the options, preparing the input wsdl / soap files in the specific log format, and repeating this manual task every time. &lt;br /&gt;
&lt;br /&gt;
I have written the WsiHero utility to make this validation simpler.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;How to become a WSI hero?&lt;/b&gt;&lt;br /&gt;
If you want to easily validate your service for WSI compliance and become a WSI hero then &lt;a href="http://cid-4999e5d00449874d.office.live.com/self.aspx/.Public/WsiHero.rar"&gt;Download WsiHero&lt;/a&gt;. It is a GUI application which saves you the need to deal with the WSI command line and its strict log format.&lt;br /&gt;
&lt;br /&gt;
&lt;iframe frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="http://cid-4999e5d00449874d.office.live.com/embedicon.aspx/.Public/WsiHero.rar" style="background-color: #fcfcfc; height: 115px; padding: 0; width: 98px;" title="Preview"&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Installation&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;1.&lt;/b&gt; Ensure Microsoft .Net framework 2.0 or higher is installed (http://www.microsoft.com/downloads/en/details.aspx?FamilyID=0856eacb-4362-4b0d-8edd-aab15c5e04f5&amp;amp;displaylang=en).&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;2.&lt;/b&gt; Ensure Java 5 or higher is installed (http://www.java.com/en/download/index.jsp).&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;3.&lt;/b&gt; &lt;a href="http://cid-4999e5d00449874d.office.live.com/self.aspx/.Public/WsiHero.rar"&gt;Download WsiHero&lt;/a&gt; and extract it to some folder, for example c:\program files\WsiHero.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;4.&lt;/b&gt; Since it is not legal for me to distribute the WSI command line utility, please download it by yourself as follows:&lt;br /&gt;
&lt;br /&gt;
Download these two zip files to your machine:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://ws-i.org/profiles/BPTestToolsProcess-1.2-2.0-Final.zip"&gt;http://ws-i.org/profiles/BPTestToolsProcess-1.2-2.0-Final.zip&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.ws-i.org/profiles/RSP1.0-Delivery-Package.zip"&gt;http://www.ws-i.org/profiles/RSP1.0-Delivery-Package.zip&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Do not extract them, just put them as .zip in the WsiHero folder (c:\program files\WsiHero). Do not change their names.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_6DvmzgV-o20/TOeutmSbGxI/AAAAAAAABX4/-JiXRSt-7cU/s1600/wsiherofolder.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="128" src="http://4.bp.blogspot.com/_6DvmzgV-o20/TOeutmSbGxI/AAAAAAAABX4/-JiXRSt-7cU/s320/wsiherofolder.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
In case the direct links do not work for some reason here is how to get the above files from the &lt;a href="http://www.ws-i.org/"&gt;WSI site&lt;/a&gt;: From the "deliverables" section  of the site download "BP 1.2 and 2.0 Test Tools package" and "Reliable Secure Profile Delivery Package".&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Usage&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;1.&lt;/b&gt; Run WsiHero.exe from its folder.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;2.&lt;/b&gt; Paste a Wsdl or a Soap file location into the text box and press "Add". &lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://4.bp.blogspot.com/_6DvmzgV-o20/TObOFG4SlQI/AAAAAAAABXc/oDaH9yOfbGI/s1600/add.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="246" src="http://4.bp.blogspot.com/_6DvmzgV-o20/TObOFG4SlQI/AAAAAAAABXc/oDaH9yOfbGI/s320/add.png" style="cursor: move;" width="320" /&gt;&lt;/a&gt;&lt;br /&gt;
Notes: &lt;br /&gt;
&lt;br /&gt;
&lt;li&gt; Location can be a local disk path or a Url. &lt;br /&gt;
&lt;li&gt; &lt;b&gt;If the file contains Soap it must have the .Xml extension. Otherwise it is assumed to be a Wsdl.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
For example any of the following can be put in the text box:&lt;br /&gt;
&lt;br /&gt;
&lt;fieldset style="background-color: #eeeeee; font-family: courier new; font-size: 100%;"&gt;c:\soap_envelopes\soap.xml&lt;br /&gt;
c:\wsdl\service.wsdl&lt;br /&gt;
http://www.service.com/MyService.svc?wsdl&lt;/fieldset&gt;&lt;br /&gt;
If you do not have any Wsdl available you can to use &lt;a href="http://webservices.daehosting.com/services/TemperatureConversions.wso?WSDL"&gt;http://webservices.daehosting.com/services/TemperatureConversions.wso?WSDL&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;3.&lt;/b&gt; Repeat step (2) any number of times.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;4.&lt;/b&gt; Click the arrow near the validation button and choose the validation type you want to perform:&lt;br /&gt;
&lt;br /&gt;
&lt;li&gt; For Soap 1.1 services choose "Basic Profile 1.2".&lt;br /&gt;
&lt;li&gt; For Soap 1.2 services choose "Basic Profile 2.0".&lt;br /&gt;
&lt;li&gt; For secured / reliable services choose "Reliable Secure Profile 1.0" (you may want to test such services also with one of the former options).&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://2.bp.blogspot.com/_6DvmzgV-o20/TObOFxigHJI/AAAAAAAABXg/cxhY0MU6aAY/s1600/choose.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="258" src="http://2.bp.blogspot.com/_6DvmzgV-o20/TObOFxigHJI/AAAAAAAABXg/cxhY0MU6aAY/s320/choose.png" style="cursor: move;" width="320" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
After a few seconds (depending on the input size) the WSI report will appear:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://3.bp.blogspot.com/_6DvmzgV-o20/TObOGn6BzII/AAAAAAAABXk/_BPyfR3fqLg/s1600/report.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="149" src="http://3.bp.blogspot.com/_6DvmzgV-o20/TObOGn6BzII/AAAAAAAABXk/_BPyfR3fqLg/s320/report.png" style="cursor: move;" width="320" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
I plan to open source and enhance this utility soon. &lt;br /&gt;
&lt;a href="mailto:yaronn01@gmail.com"&gt;Let me know&lt;/a&gt; if you have any problem or a feedback.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1482776199578137808-7483747904605460626?l=webservices20.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Rh0h-TScXlkmwIBwS2Y0YJtS0eE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Rh0h-TScXlkmwIBwS2Y0YJtS0eE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Rh0h-TScXlkmwIBwS2Y0YJtS0eE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Rh0h-TScXlkmwIBwS2Y0YJtS0eE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/WebServices20/~4/LqCe76CkXtE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://webservices20.blogspot.com/feeds/7483747904605460626/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1482776199578137808&amp;postID=7483747904605460626" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1482776199578137808/posts/default/7483747904605460626?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1482776199578137808/posts/default/7483747904605460626?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/WebServices20/~3/LqCe76CkXtE/wsihero-gui-utility-for-web-services.html" title="WsiHero: A GUI utility for web services WSI validation" /><author><name>Yaron Naveh (MVP)</name><uri>http://www.blogger.com/profile/11793800386245798442</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://2.bp.blogspot.com/_6DvmzgV-o20/TKczhOA8ODI/AAAAAAAABWI/y6trZ_YyLPU/S220/me_small.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_6DvmzgV-o20/TObAle0Q2CI/AAAAAAAABXY/Bbt2vqsmwyA/s72-c/hero_white.png" height="72" width="72" /><thr:total>4</thr:total><feedburner:origLink>http://webservices20.blogspot.com/2010/11/wsihero-gui-utility-for-web-services.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0MCQHY8cSp7ImA9Wx5aEkg.&quot;"><id>tag:blogger.com,1999:blog-1482776199578137808.post-6900613179617292117</id><published>2010-11-08T23:24:00.000+02:00</published><updated>2010-11-08T23:24:21.879+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-08T23:24:21.879+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SSL" /><title>Wcf with 256 bit Ssl</title><content type="html">Recently I had to call a Java web service from Wcf. The service was secured with a 256-bit ssl certificate. Every request I made was rejected with a 401 Unauthorized response.&lt;br /&gt;
&lt;br /&gt;
I then used &lt;a href="https://www.fortify.net/cgi/ssl_2.pl"&gt;this site&lt;/a&gt; to check what encryption strength my machine supports:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_6DvmzgV-o20/TNhpYDyGqMI/AAAAAAAABXE/JrBR67B_EKs/s1600/ssl128.PNG" imageanchor="1" style=""&gt;&lt;img border="0" height="195" width="400" src="http://1.bp.blogspot.com/_6DvmzgV-o20/TNhpYDyGqMI/AAAAAAAABXE/JrBR67B_EKs/s400/ssl128.PNG"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
It seemed my pc is configured to only allow 128 bit connection.&lt;br /&gt;
&lt;br /&gt;
Luckily I have found &lt;a href="http://blogs.technet.com/b/steriley/archive/2007/11/06/changing-the-ssl-cipher-order-in-internet-explorer-7-on-windows-vista.aspx"&gt;this link&lt;/a&gt; which explains how to configure windows to use 256-bit Ssl (Vista only). It seems the problem is in the windows defaults and not in Wcf. This changed the result in IE:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_6DvmzgV-o20/TNhpuWhuFUI/AAAAAAAABXM/qSVGw4SJ094/s1600/ssl+256.PNG" imageanchor="1" style=""&gt;&lt;img border="0" height="197" width="400" src="http://2.bp.blogspot.com/_6DvmzgV-o20/TNhpuWhuFUI/AAAAAAAABXM/qSVGw4SJ094/s400/ssl+256.PNG"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
and also the Wcf client worked. The strange is that the setting that needs to be changed should only affect the order of the supported algorithms. So if the server requires a 256-bit OR a 128-bit key, the default setting would suggest 128 first. But if the server only allows 256-bit I would expect this to work since this is a supported configuration, just not the first in order. Either way &lt;a href="http://blogs.technet.com/b/steriley/archive/2007/11/06/changing-the-ssl-cipher-order-in-internet-explorer-7-on-windows-vista.aspx"&gt;the fix&lt;/a&gt; made it work.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1482776199578137808-6900613179617292117?l=webservices20.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/6XvfjJvZKSP0fpmFhnhyYbaL2dM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6XvfjJvZKSP0fpmFhnhyYbaL2dM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/6XvfjJvZKSP0fpmFhnhyYbaL2dM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6XvfjJvZKSP0fpmFhnhyYbaL2dM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/WebServices20/~4/JKCrMrwWEmw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://webservices20.blogspot.com/feeds/6900613179617292117/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1482776199578137808&amp;postID=6900613179617292117" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1482776199578137808/posts/default/6900613179617292117?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1482776199578137808/posts/default/6900613179617292117?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/WebServices20/~3/JKCrMrwWEmw/wcf-with-256-bit-ssl.html" title="Wcf with 256 bit Ssl" /><author><name>Yaron Naveh (MVP)</name><uri>http://www.blogger.com/profile/11793800386245798442</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://2.bp.blogspot.com/_6DvmzgV-o20/TKczhOA8ODI/AAAAAAAABWI/y6trZ_YyLPU/S220/me_small.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_6DvmzgV-o20/TNhpYDyGqMI/AAAAAAAABXE/JrBR67B_EKs/s72-c/ssl128.PNG" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://webservices20.blogspot.com/2010/11/wcf-with-256-bit-ssl.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUcMQ3g6eyp7ImA9Wx5aEUs.&quot;"><id>tag:blogger.com,1999:blog-1482776199578137808.post-8268815530462035742</id><published>2010-11-01T00:09:00.006+02:00</published><updated>2010-11-07T23:58:02.613+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-07T23:58:02.613+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Rest" /><category scheme="http://www.blogger.com/atom/ns#" term="Html5" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight" /><title>Silverlight, Html5 and the future of Wcf</title><content type="html">&lt;b&gt;Update: Silverlight is &lt;a href="http://jesseliberty.com/2010/11/02/silverlight-alive-and-well/"&gt;alive and well&lt;/a&gt;!&lt;/b&gt; Microsoft clarifies that Silverlight is a &lt;a href="http://weblogs.asp.net/scottgu/archive/2010/11/04/silverlight-questions.aspx"&gt;strategic technology&lt;/a&gt;. Scott Guthrie &lt;a href="http://weblogs.asp.net/scottgu/archive/2010/11/04/silverlight-questions.aspx#7636876"&gt;promises&lt;/a&gt; that future features and tools will be revealed soon. I will update about anything which has relevancy to Wcf. This post is still very relevant to show the increasing importance of javascript clients, side-by-side with Silverlight clients.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://wildermuth.com/2010/10/30/Post-PDC_HTML5_v_Silverlight_Debate"&gt;Everybody&lt;/a&gt; &lt;a href="http://csharperimage.jeremylikness.com/2010/10/so-whats-fuss-about-silverlight.html"&gt;talk&lt;/a&gt; about the "unofficial" &lt;a href="http://www.zdnet.com/blog/microsoft/microsoft-our-strategy-with-silverlight-has-shifted/7834"&gt;announcement&lt;/a&gt; of Microsoft embracing Html5 over Silverlight. And while this was never approved (unless you read &lt;a href="http://team.silverlight.net/announcement/the-future-of-silverlight/"&gt;between the lines&lt;/a&gt;) the below may be a hint. &lt;br /&gt;
&lt;br /&gt;
Yesterday Microsoft had published an "early access" &lt;a href="http://wcf.codeplex.com/"&gt;codeplex project&lt;/a&gt; with some features from the next Wcf version. The two main themes seem to be native Http support and &lt;a href="http://wcf.codeplex.com/wikipage?title=WCF%20jQuery"&gt;jQuery&lt;/a&gt;. And not a word about Silverlight. Will there ever be security in the SL netTcp transport? Will we see more WS-Security coverage from the Wcf stack? It seems jQuery improvements got a higher priority for this release. Is the Wcf early access project a hint for a focus shift from SL to Html5? (&lt;b&gt;update:&lt;/b&gt; more &lt;a href="http://weblogs.asp.net/scottgu/archive/2010/11/04/silverlight-questions.aspx"&gt;SL features&lt;/a&gt; will be revealed soon, hopefully they include the above).&lt;br /&gt;
&lt;br /&gt;
The planned jQuery support includes code generation for javascript clients, working with untyped json objects, Html forms submission and &lt;a href="http://wcf.codeplex.com/wikipage?title=WCF%20jQuery"&gt;more&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;So how does the Html5 thing affect Wcf?&lt;/b&gt;&lt;br /&gt;
This is definitely a big push to the Rest / Json / Anti WS-* approach (not that it needed it anyway). Silverlight did not support the full Wcf stack in version 4, but in theory nothing prevented it from growing into it in the next versions. Browsers in contrary cannot work with WS-Security and feel much more at home with Json over Xml. Also Rest is more natural for the web anyway.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1482776199578137808-8268815530462035742?l=webservices20.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/IWoYSjr2NiU_aQjR8QsxFtUWZyo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/IWoYSjr2NiU_aQjR8QsxFtUWZyo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/IWoYSjr2NiU_aQjR8QsxFtUWZyo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/IWoYSjr2NiU_aQjR8QsxFtUWZyo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/WebServices20/~4/HSn41o1efiE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://webservices20.blogspot.com/feeds/8268815530462035742/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1482776199578137808&amp;postID=8268815530462035742" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1482776199578137808/posts/default/8268815530462035742?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1482776199578137808/posts/default/8268815530462035742?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/WebServices20/~3/HSn41o1efiE/future-of-wcf-is-silverlight-jquery.html" title="Silverlight, Html5 and the future of Wcf" /><author><name>Yaron Naveh (MVP)</name><uri>http://www.blogger.com/profile/11793800386245798442</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://2.bp.blogspot.com/_6DvmzgV-o20/TKczhOA8ODI/AAAAAAAABWI/y6trZ_YyLPU/S220/me_small.jpg" /></author><thr:total>4</thr:total><feedburner:origLink>http://webservices20.blogspot.com/2010/11/future-of-wcf-is-silverlight-jquery.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0MGQXs7fip7ImA9Wx5bEkQ.&quot;"><id>tag:blogger.com,1999:blog-1482776199578137808.post-1886167207280738810</id><published>2010-10-27T22:44:00.007+02:00</published><updated>2010-10-28T21:50:20.506+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-10-28T21:50:20.506+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Performance" /><title>Important Wcf performance issue + workaround</title><content type="html">I have &lt;a href="http://webservices20.blogspot.com/2010/07/wcf-gotcha-binary-and-mtom-encodings.html"&gt;written&lt;/a&gt; &lt;a href="http://webservices20.blogspot.com/2010/04/wcf-first-connection-is-slow.html"&gt;about&lt;/a&gt; Wcf &lt;a href="http://webservices20.blogspot.com/2010/03/datasets-considered-harmful-part-2.html"&gt;performance&lt;/a&gt; &lt;a href="http://webservices20.blogspot.com/2009/06/are-wcf-defaults-considered-harmful.html"&gt;issues&lt;/a&gt; &lt;a href="http://webservices20.blogspot.com/2009/01/wcf-performance-gearing-up-your-service.html"&gt;before&lt;/a&gt;, but this one seems to be the biggest.&amp;nbsp;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/f3a1a79b-e2c0-498f-a2fa-bc3e54f4ba89"&gt;Valery&lt;/a&gt; had published in the Wcf forum an interesting performance issue. In short, a WCF client tries to consume a non-WCF service where the contract looks something like this:&lt;br /&gt;
&lt;br /&gt;
&lt;fieldset style="background-color: #eeeeee; font-family: courier new; font-size: 100%;"&gt;&lt;div class="code"&gt;&lt;span style="color: blue;"&gt;class&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;Foo&lt;/span&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: black;"&gt;{&lt;/span&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;byte&lt;/span&gt;&lt;span style="color: black;"&gt;[]&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;picture&lt;/span&gt;&lt;span style="color: blue;"&gt;;&lt;/span&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: black;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/fieldset&gt;&lt;br /&gt;
&lt;br /&gt;
In soap, byte arrays are encoded as base64 strings so it can look like this:&lt;br /&gt;
&lt;br /&gt;
&lt;fieldset style="background-color: #eeeeee; font-family: courier new; font-size: 100%;"&gt;&amp;lt;picture&amp;gt;/9j/4AAQSkZJReV6R8MLi7nW6UUUViWf/Z.....&amp;lt;/picture&amp;gt;&lt;/fieldset&gt;&lt;br /&gt;
or with line breaks after each 73 characters, like this:&lt;br /&gt;
&lt;br /&gt;
&lt;fieldset style="background-color: #eeeeee; font-family: courier new; font-size: 100%;"&gt;&amp;lt;picture&amp;gt;/9j/4AAQSkZJReV6R8MLi7nW61+58zBz5Q+7Xpdj&lt;br /&gt;
/PK/4AAQSkPOIeV6R8MLi7nW61+58zBz5Q+7Xpdj&lt;br /&gt;
/9R/4AAQSkZJReV6R8MLi7nW6VZ788zBz5Q+7Xpdj&lt;br /&gt;
4U4wVoqwUUUViWf/Z&amp;lt;/picture&amp;gt;&lt;/fieldset&gt;&lt;br /&gt;
both options are valid according to the&amp;nbsp;&lt;a href="http://tools.ietf.org/html/rfc4648"&gt;base64 RFC&lt;/a&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;fieldset style="background-color: #eeeeee; font-family: courier new; font-size: 100%;"&gt;Implementations MUST NOT add line feeds to base-encoded data unless&lt;br /&gt;
the specification referring to this document explicitly directs base&lt;br /&gt;
encoders to add line feeds after a specific number of characters.&lt;/fieldset&gt;&lt;br /&gt;
Ok so it does not really advocate this... But it is a fact that many soap stacks still use this MIME-originated format and also Wcf supports it.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;So what is the problem?&lt;/b&gt;&lt;br /&gt;
It seems that when Wcf gets a message which contains base64 with CRLF, the processing is slower in a few seconds(!). A drill down shows that the problem is in the DataContract serializer. Take a look at this program:&lt;br /&gt;
&lt;br /&gt;
&lt;fieldset style="background-color: #eeeeee; font-family: courier new; font-size: 100%;"&gt;&lt;div class="code"&gt;&lt;span style="color: black;"&gt;[DataContract]&lt;/span&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;class&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;Foo&lt;/span&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: black;"&gt;{&lt;/span&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: black;"&gt;[DataMember]&lt;/span&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;byte&lt;/span&gt;&lt;span style="color: black;"&gt;[]&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;picture&lt;/span&gt;&lt;span style="color: blue;"&gt;;&lt;/span&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: black;"&gt;}&lt;/span&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: blue;"&gt;class&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;Program&lt;/span&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: black;"&gt;{&lt;/span&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;static&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;void&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;Main(&lt;/span&gt;&lt;span style="color: blue;"&gt;string&lt;/span&gt;&lt;span style="color: black;"&gt;[]&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;args)&lt;/span&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: black;"&gt;{&lt;/span&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;var&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;t1&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;getTime(&lt;/span&gt;&lt;span style="color: grey;"&gt;@"C:\temp\base64_with_line_breaks.txt"&lt;/span&gt;&lt;span style="color: black;"&gt;)&lt;/span&gt;&lt;span style="color: blue;"&gt;;&lt;/span&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;var&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;t2&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;getTime(&lt;/span&gt;&lt;span style="color: grey;"&gt;@"C:\temp\base64_without_line_breaks.txt"&lt;/span&gt;&lt;span style="color: black;"&gt;)&lt;/span&gt;&lt;span style="color: blue;"&gt;;&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #2b91af;"&gt;Console&lt;/span&gt;&lt;span style="color: black;"&gt;.WriteLine(&lt;/span&gt;&lt;span style="color: grey;"&gt;"Time with breaks: " &lt;/span&gt;&lt;span style="color: black;"&gt;+&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;t1)&lt;/span&gt;&lt;span style="color: blue;"&gt;;&lt;/span&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #2b91af;"&gt;Console&lt;/span&gt;&lt;span style="color: black;"&gt;.WriteLine(&lt;/span&gt;&lt;span style="color: grey;"&gt;"Time with no breaks: " &lt;/span&gt;&lt;span style="color: black;"&gt;+&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;t2)&lt;/span&gt;&lt;span style="color: blue;"&gt;;&lt;/span&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #2b91af;"&gt;Console&lt;/span&gt;&lt;span style="color: black;"&gt;.ReadKey()&lt;/span&gt;&lt;span style="color: blue;"&gt;;&lt;/span&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: black;"&gt;}&lt;/span&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;static&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;double&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;getTime(&lt;/span&gt;&lt;span style="color: blue;"&gt;string&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;path)&lt;/span&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: black;"&gt;{&lt;/span&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;var&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;ser&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;new&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;DataContractSerializer(&lt;/span&gt;&lt;span style="color: blue;"&gt;typeof&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;(Foo))&lt;/span&gt;&lt;span style="color: blue;"&gt;;&lt;/span&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;var&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;stream&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;new&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #2b91af;"&gt;FileStream&lt;/span&gt;&lt;span style="color: black;"&gt;(path,&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;FileMode.Open)&lt;/span&gt;&lt;span style="color: blue;"&gt;;&lt;/span&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;var&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;start&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #2b91af;"&gt;DateTime&lt;/span&gt;&lt;span style="color: black;"&gt;.Now&lt;/span&gt;&lt;span style="color: blue;"&gt;;&lt;/span&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;for&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;(&lt;/span&gt;&lt;span style="color: blue;"&gt;int&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;i&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: maroon;"&gt;0&lt;/span&gt;&lt;span style="color: blue;"&gt;;&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;i&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: maroon;"&gt;40&lt;/span&gt;&lt;span style="color: blue;"&gt;;&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;i++)&lt;/span&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: black;"&gt;{&lt;/span&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: black;"&gt;ser.ReadObject(stream)&lt;/span&gt;&lt;span style="color: blue;"&gt;;&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: black;"&gt;stream.Position&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: maroon;"&gt;0&lt;/span&gt;&lt;span style="color: blue;"&gt;;&lt;/span&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: black;"&gt;}&lt;/span&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;var&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;end&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #2b91af;"&gt;DateTime&lt;/span&gt;&lt;span style="color: black;"&gt;.Now&lt;/span&gt;&lt;span style="color: blue;"&gt;;&lt;/span&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;var&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;t&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;end&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;-&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;start&lt;/span&gt;&lt;span style="color: blue;"&gt;;&lt;/span&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;return&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;t.TotalSeconds&lt;/span&gt;&lt;span style="color: blue;"&gt;;&lt;/span&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: black;"&gt;}&lt;/span&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: black;"&gt;}&lt;/span&gt; &lt;/div&gt;&lt;/fieldset&gt;&lt;br /&gt;
For those of you who are interested to test this, the files are &lt;a href="http://cid-4999e5d00449874d.office.live.com/self.aspx/.Public/base64%5E_without%5E_line%5E_breaks.txt"&gt;here&lt;/a&gt; and &lt;a href="http://cid-4999e5d00449874d.office.live.com/self.aspx/.Public/base64%5E_with%5E_line%5E_breaks.txt"&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
The output is:&lt;br /&gt;
&lt;br /&gt;
&lt;fieldset style="background-color: #eeeeee; font-family: courier new; font-size: 100%;"&gt;Time with breaks: 10.8998196 seconds&lt;br /&gt;
Time with no breaks: 0.0029994 seconds&lt;/fieldset&gt;&lt;br /&gt;
This clearly reveals a performance problem.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Why does this happen?&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
While debugging the &lt;a href="http://weblogs.asp.net/rajbk/archive/2010/04/21/setting-up-visual-studio-2010-to-step-into-microsoft-net-source-code.aspx"&gt;.Net source code&lt;/a&gt;, I have found this in the XmlBaseReader class (code comments were in the source - they are not mine):&lt;br /&gt;
&lt;br /&gt;
&lt;fieldset style="background-color: #eeeeee; font-family: courier new; font-size: 100%;"&gt;&lt;br /&gt;
&lt;div class="code"&gt;&lt;span style="color: blue;"&gt;int&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;ReadBytes(...)&lt;/span&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: black;"&gt;{&lt;/span&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;try&lt;/span&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: black;"&gt;&amp;nbsp;{&lt;/span&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; ...&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: black;"&gt;&amp;nbsp;}&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: blue;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span class="Apple-style-span" style="color: grey;"&gt;  &amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;catch&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;(FormatException&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;exception)&lt;/span&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;{&lt;/span&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style="color: darkgreen;"&gt;//&amp;nbsp;Something&amp;nbsp;was&amp;nbsp;wrong&amp;nbsp;with&amp;nbsp;the&amp;nbsp;format,&amp;nbsp;see&amp;nbsp;if&amp;nbsp;we&amp;nbsp;can&amp;nbsp;strip&amp;nbsp;the&amp;nbsp;spaces&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;int&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;i&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: maroon;"&gt;0&lt;/span&gt;&lt;span style="color: blue;"&gt;;&lt;/span&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;int&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;j&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: maroon;"&gt;0&lt;/span&gt;&lt;span style="color: blue;"&gt;;&lt;/span&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;while&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;(&lt;/span&gt;&lt;span style="color: blue;"&gt;true&lt;/span&gt;&lt;span style="color: black;"&gt;)&lt;/span&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;{&lt;/span&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;while&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;(j&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;charCount&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;XmlConverter.IsWhitespace(chars[j]))&lt;/span&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;j++&lt;/span&gt;&lt;span style="color: blue;"&gt;;&lt;/span&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;if&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;(j&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;==&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;charCount)&lt;/span&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;break;&lt;/span&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;chars[i++]&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: grey;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;chars[j++]&lt;/span&gt;&lt;span style="color: blue;"&gt;;&lt;/span&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;}&lt;/span&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: black;"&gt;...&lt;/span&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: black;"&gt;}&lt;/span&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: black;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/fieldset&gt;&lt;br /&gt;
So the data contract serializer tries to read the base64 string, but for some reason succeeds only if the string does not have white spaces inside it (we can further debug to see how that happens but it is exhausting for one post :). The serializer then removes all the white spaces (which requires copying the buffer again) and tries again. This is definitely a performance issue.&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
&lt;br /&gt;
&lt;li&gt; This happens with both .Net framework 3.5 and 4.0.&lt;/li&gt;&lt;br /&gt;
&lt;li&gt; This is a DataContract specific issue - it does not happen when you use other .Net mechanisms such as Convert.FromBase64String&lt;br /&gt;
&lt;br /&gt;
I have reported this in Microsoft connect, you are welcome to &lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/617199/wcf-datacontract-serializer-performance-issue-with-base64-strings-with-spaces"&gt;vote this issue up&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Workarounds&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
There a few workarounds. The trade-offs are generally convenience of API (or "where you prefer to put the 'dirty' stuff").&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;1.&amp;nbsp;&lt;/b&gt;As &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/f3a1a79b-e2c0-498f-a2fa-bc3e54f4ba89"&gt;Valery&lt;/a&gt; noticed, you can change the contract to use String instead of byte[]. Then Convert.FromBase64String will give you the byte array.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;2.&lt;/b&gt; Change your contracts to use the XmlSerializer instead of DataContract serializer. The former does not experience this issue. The XmlSerializer is generally slower (when base64 does not appear that it) so this is what you loose. You get a better API here as clients do not need to manipulate the base64 string.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;3.&lt;/b&gt; The best of course is to change the service implementation to return base64 without line breaks. Also if large binaries are returned anyway it may be a better idea to employ MTOM.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;4.&lt;/b&gt; A Wcf custom encoder can strip the spaces from the message before it is deserialized. However this also involves copy of strings and this is beneficial only in rare cases.&lt;/li&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1482776199578137808-1886167207280738810?l=webservices20.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/2kqjqxEUw8w9PqITdI_XnQa0T9Q/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2kqjqxEUw8w9PqITdI_XnQa0T9Q/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/2kqjqxEUw8w9PqITdI_XnQa0T9Q/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2kqjqxEUw8w9PqITdI_XnQa0T9Q/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/WebServices20/~4/pU-ZZZLJxqM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://webservices20.blogspot.com/feeds/1886167207280738810/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1482776199578137808&amp;postID=1886167207280738810" title="12 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1482776199578137808/posts/default/1886167207280738810?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1482776199578137808/posts/default/1886167207280738810?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/WebServices20/~3/pU-ZZZLJxqM/important-wcf-performance-issue.html" title="Important Wcf performance issue + workaround" /><author><name>Yaron Naveh (MVP)</name><uri>http://www.blogger.com/profile/11793800386245798442</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://2.bp.blogspot.com/_6DvmzgV-o20/TKczhOA8ODI/AAAAAAAABWI/y6trZ_YyLPU/S220/me_small.jpg" /></author><thr:total>12</thr:total><feedburner:origLink>http://webservices20.blogspot.com/2010/10/important-wcf-performance-issue.html</feedburner:origLink></entry></feed>

