<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>All About Interop : JSON</title><link>http://blogs.msdn.com/dotnetinterop/archive/tags/JSON/default.aspx</link><description>Tags: JSON</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Varying Content-Type according to the URL in a WCF REST Service</title><link>http://blogs.msdn.com/dotnetinterop/archive/2008/04/03/varying-content-type-according-to-the-url-in-wcf-rest-service.aspx</link><pubDate>Thu, 03 Apr 2008 18:20:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8351948</guid><dc:creator>DotNetInterop</dc:creator><slash:comments>10</slash:comments><comments>http://blogs.msdn.com/dotnetinterop/comments/8351948.aspx</comments><wfw:commentRss>http://blogs.msdn.com/dotnetinterop/commentrss.aspx?PostID=8351948</wfw:commentRss><description>&lt;font family="Calibri"&gt;&lt;size=3&gt;
&lt;/size=3&gt;&lt;/font&gt;
&lt;p&gt;&lt;font family="Calibri"&gt;My buddy Justin &lt;a href="http://blogs.msdn.com/justinjsmith/archive/2007/08/22/setting-http-headers-in-wcf-net-3-5.aspx" class="" mce_href="http://blogs.msdn.com/justinjsmith/archive/2007/08/22/setting-http-headers-in-wcf-net-3-5.aspx"&gt;wrote about how to set the Content-Type&amp;nbsp;headers&lt;/a&gt; in a WebGet method in a WCF REST app. Doing this would allow each WebGet method to specify its own Content-Type at runtime.&amp;nbsp; &lt;/font&gt;&lt;/p&gt;

&lt;p&gt;&lt;font family="Calibri"&gt;After I summarized how to build a WCF REST app in a post a couple weeks ago, Kyle Beyer asked if there was a way to avoid hard-coding the Content-Type in the WebGet attribute on the method. &lt;/font&gt;&lt;/p&gt;

&lt;blockquote&gt;&lt;font family="Calibri"&gt;One question ... Do you know of a way to get a WCF service to honor the 'Content-Type' HTTP header instead of hard coding the content type via an attribute on the method? I would really like to create a service that has a single set of methods which returns JSON/XML based on the HTTP header(s) ... suggestions? &lt;/font&gt;&lt;/blockquote&gt;

&lt;p&gt;&lt;font family="Calibri"&gt;Taking a page from the White House Press spokesperson, rather than answering Kyle's question, I'm going to answer a different question, a question&amp;nbsp;&lt;i&gt;I would like &lt;/i&gt;to answer.&amp;nbsp;&amp;nbsp;The question I will answer is, &lt;i&gt;how can I create a service that has a single set of methods that returns JSON or XML depending on the URL tickled (and not on the Accept header)? &lt;/i&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;&lt;font family="Calibri"&gt;This is a little different than what Kyle wants, but it may be good enough.&amp;nbsp; What I mean is this:&amp;nbsp; a single method decorated with [WebGet] can deliver JSON or XML, depending on the URI.&amp;nbsp; We can specify &lt;a href="http://server/Foo/3782982/json"&gt;http://server/Foo/3782982/json&lt;/a&gt; and get json, or specify &lt;a href="http://server/Foo/3782982/xml"&gt;http://server/Foo/3782982/xml&lt;/a&gt; and get plain-old-XML.&amp;nbsp; &lt;/font&gt;&lt;/p&gt;

&lt;p mce_keep="true"&gt;&lt;font family="Calibri"&gt;We can do this without any extra code in the Operation method itself.&amp;nbsp; In fact the operation method doesn't care whether it is JSON or XML.&amp;nbsp; How do we pull this off? &lt;/font&gt;&lt;/p&gt;

&lt;p mce_keep="true"&gt;&lt;font family="Calibri"&gt;My trick was to use a custom ServiceHost.&amp;nbsp; It automagically enables Content-Type selection by URL, for all WebGet&lt;br&gt;operations that are decorated with a special marker attribute.&amp;nbsp; (ionic.samples.WcfRest.DynamicContentType).&amp;nbsp; &lt;/font&gt;&lt;/p&gt;

&lt;p mce_keep="true"&gt;&lt;font family="Calibri"&gt;The service host works its magic by cloning the OperationDescription for all operations in the service contract that are specially marked.&amp;nbsp; One copy of the OperationDescription gets WebMessageFormat.Xml and the other gets WebMessageFormat.Json.&amp;nbsp;They get differing UriTemplates so WCF can disambiguate (double word score).&amp;nbsp; Both clones point to the same method in the service class, so there is no duplication of application code.&lt;/font&gt;&lt;/p&gt;

&lt;p mce_keep="true"&gt;&lt;font family="Calibri"&gt;Here's what the service host looks like:&amp;nbsp;&lt;/font&gt;&lt;/p&gt;

&lt;div style="border: 1pt solid windowtext; padding: 2pt; background: white none repeat scroll 0% 0%; font-size: 9pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: black; font-family: Consolas,Courier New; line-height: 98%;"&gt;



&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: rgb(43, 145, 175);"&gt;MagicContentTypeSelectingServiceHost&lt;/span&gt; : ServiceHost&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;4&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; MagicContentTypeSelectingServiceHost(&lt;span style="color: rgb(43, 145, 175);"&gt;Type&lt;/span&gt; t, &lt;span style="color: blue;"&gt;params&lt;/span&gt; Uri[] baseAddrs) : &lt;span style="color: blue;"&gt;base&lt;/span&gt;(t, baseAddrs) { }&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;5&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;7&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; MagicContentTypeSelectingServiceHost(&lt;span style="color: blue;"&gt;object&lt;/span&gt; singletonInstance, &lt;span style="color: blue;"&gt;params&lt;/span&gt; Uri[] baseAddresses)&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;8&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; : &lt;span style="color: blue;"&gt;base&lt;/span&gt;(singletonInstance, baseAddresses) { }&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;9&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;10&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;11&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; MagicContentTypeSelectingServiceHost() : &lt;span style="color: blue;"&gt;base&lt;/span&gt;() { }&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;12&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;13&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;14&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;protected&lt;/span&gt; &lt;span style="color: blue;"&gt;override&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; OnOpening()&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;15&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;16&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; TraceMe(&lt;span style="color: rgb(163, 21, 21);"&gt;""&lt;/span&gt;);&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;17&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; TraceMe(&lt;span style="color: rgb(163, 21, 21);"&gt;""&lt;/span&gt;);&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;18&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ServiceEndpointCollection sec = &lt;span style="color: blue;"&gt;this&lt;/span&gt;.Description.Endpoints;&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;19&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;foreach&lt;/span&gt; (ServiceEndpoint se &lt;span style="color: blue;"&gt;in&lt;/span&gt; sec)&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;20&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;21&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&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; TraceMe(&lt;span style="color: rgb(163, 21, 21);"&gt;"Endpoint: "&lt;/span&gt;);&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;22&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&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; TraceMe(&lt;span style="color: rgb(163, 21, 21);"&gt;"&amp;nbsp; Address: {0}"&lt;/span&gt;, se.Address.ToString());&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;23&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&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; TraceMe(&lt;span style="color: rgb(163, 21, 21);"&gt;"&amp;nbsp; Contract: {0}"&lt;/span&gt;, se.Contract.ToString());&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;24&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;25&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&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 style="color: blue;"&gt;var&lt;/span&gt; opsToAdd = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43, 145, 175);"&gt;List&lt;/span&gt;&amp;lt;OperationDescription&amp;gt;();&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;26&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&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 style="color: blue;"&gt;foreach&lt;/span&gt; (OperationDescription opDesc &lt;span style="color: blue;"&gt;in&lt;/span&gt; se.Contract.Operations)&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;27&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&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;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;28&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&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;span style="color: blue;"&gt;object&lt;/span&gt;[] attrs = opDesc.SyncMethod.GetCustomAttributes(&lt;span style="color: blue;"&gt;typeof&lt;/span&gt;(ionic.samples.WcfRest.DynamicContentType), &lt;span style="color: blue;"&gt;false&lt;/span&gt;);&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;29&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&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;span style="color: blue;"&gt;if&lt;/span&gt; ((attrs != &lt;span style="color: blue;"&gt;null&lt;/span&gt;) &amp;amp;&amp;amp; (attrs.Length == 1))&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;30&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&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;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;31&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&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; TraceMe(&lt;span style="color: rgb(163, 21, 21);"&gt;"&amp;nbsp; operation: {0}"&lt;/span&gt;, opDesc.Name);&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;32&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&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; TraceMe(&lt;span style="color: rgb(163, 21, 21);"&gt;"&amp;nbsp;&amp;nbsp;&amp;nbsp; Marked with {0} attribute"&lt;/span&gt;, &lt;span style="color: blue;"&gt;typeof&lt;/span&gt;(ionic.samples.WcfRest.DynamicContentType));&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;33&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;34&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&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; WebGetAttribute wga =&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;35&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&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; opDesc.Behaviors.Find&amp;lt;WebGetAttribute&amp;gt;();&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;36&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;37&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&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 style="color: blue;"&gt;if&lt;/span&gt; (wga != &lt;span style="color: blue;"&gt;null&lt;/span&gt;)&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;38&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&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;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;39&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&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; &lt;span style="color: blue;"&gt;if&lt;/span&gt; (wga.IsResponseFormatSetExplicitly)&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;40&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&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; {&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;41&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&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; &lt;span style="color: blue;"&gt;throw&lt;/span&gt; &lt;span style="color: blue;"&gt;new&lt;/span&gt; System.&lt;span style="color: rgb(43, 145, 175);"&gt;Exception&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;42&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&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; (&lt;span style="color: rgb(43, 145, 175);"&gt;String&lt;/span&gt;.Format(&lt;span style="color: rgb(163, 21, 21);"&gt;"On method '{0}', there are conflicting attributes. When using the "&lt;/span&gt; +&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;43&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&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; &lt;span style="color: rgb(163, 21, 21);"&gt;"custom service host {1}, on a method that is marked with {2}, the "&lt;/span&gt; +&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;44&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&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; &lt;span style="color: rgb(163, 21, 21);"&gt;"ResponseFormat in the WebGet attribute must be omitted."&lt;/span&gt;,&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;45&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&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; opDesc.Name,&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;46&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&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; &lt;span style="color: blue;"&gt;this&lt;/span&gt;.GetType().ToString(),&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;47&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&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; &lt;span style="color: blue;"&gt;typeof&lt;/span&gt;(ionic.samples.WcfRest.DynamicContentType)));&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;48&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;49&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&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; }&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;50&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;51&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&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; TraceMe(&lt;span style="color: rgb(163, 21, 21);"&gt;"&amp;nbsp;&amp;nbsp;&amp;nbsp; Cloning this operation ..."&lt;/span&gt;);&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;52&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;53&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&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; &lt;span style="color: green;"&gt;// Now, clone this OperationDescription.&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;54&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&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; &lt;span style="color: green;"&gt;// We can copy references to all properties, except those we are changing. &lt;/span&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;55&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&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; &lt;span style="color: green;"&gt;// The only thing that is changing is the WebGetAttribute, so &lt;/span&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;56&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&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; &lt;span style="color: green;"&gt;// we must actually new up one of those. &lt;/span&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;57&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;58&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&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; OperationDescription od = &lt;span style="color: blue;"&gt;new&lt;/span&gt; OperationDescription(opDesc.Name + &lt;span style="color: rgb(163, 21, 21);"&gt;".clone"&lt;/span&gt;, opDesc.DeclaringContract);&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;59&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;60&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&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; &lt;span style="color: blue;"&gt;string&lt;/span&gt; rootTemplate = wga.UriTemplate;&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;61&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&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; WebGetAttribute wga2 = &lt;span style="color: blue;"&gt;null&lt;/span&gt;;&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;62&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&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; &lt;span style="color: blue;"&gt;foreach&lt;/span&gt; (System.ServiceModel.Description.IOperationBehavior b &lt;span style="color: blue;"&gt;in&lt;/span&gt; opDesc.Behaviors)&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;63&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&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; {&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;64&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&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; &lt;span style="color: blue;"&gt;if&lt;/span&gt; ((b &lt;span style="color: blue;"&gt;as&lt;/span&gt; System.ServiceModel.Web.WebGetAttribute) != &lt;span style="color: blue;"&gt;null&lt;/span&gt;)&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;65&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&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; {&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;66&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&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; wga2 = &lt;span style="color: blue;"&gt;new&lt;/span&gt; WebGetAttribute();&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;67&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&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; &lt;span style="color: blue;"&gt;if&lt;/span&gt; (wga.IsBodyStyleSetExplicitly)&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;68&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&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; wga2.BodyStyle = wga.BodyStyle;&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;69&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;70&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&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; &lt;span style="color: blue;"&gt;if&lt;/span&gt; (wga.IsRequestFormatSetExplicitly)&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;71&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&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; wga2.RequestFormat = wga.RequestFormat;&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;72&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;73&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&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; &lt;span style="color: green;"&gt;// Now, differentiate the two WebGetAttribute instances with the ResponseFormat.&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;74&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&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; &lt;span style="color: green;"&gt;// The original OperationDescription gets XML, the clone gets JSON&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;75&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&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; wga.ResponseFormat = WebMessageFormat.Xml;&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;76&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&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; wga2.ResponseFormat = WebMessageFormat.Json;&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;77&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&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; wga.UriTemplate = rootTemplate + &lt;span style="color: rgb(163, 21, 21);"&gt;"/xml"&lt;/span&gt;;&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;78&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&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; wga2.UriTemplate = rootTemplate + &lt;span style="color: rgb(163, 21, 21);"&gt;"/json"&lt;/span&gt;;&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;79&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;80&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&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; od.Behaviors.Add(wga2);&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;81&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;82&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&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; }&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;83&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&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; &lt;span style="color: blue;"&gt;else&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;84&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&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; od.Behaviors.Add(b);&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;85&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&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; }&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;86&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;87&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&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; &lt;span style="color: blue;"&gt;foreach&lt;/span&gt; (System.ServiceModel.Description.MessageDescription md &lt;span style="color: blue;"&gt;in&lt;/span&gt; opDesc.Messages)&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;88&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&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; od.Messages.Add(md);&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;89&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;90&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&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; &lt;span style="color: blue;"&gt;foreach&lt;/span&gt; (System.ServiceModel.Description.FaultDescription fd &lt;span style="color: blue;"&gt;in&lt;/span&gt; opDesc.Faults)&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;91&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&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; od.Faults.Add(fd);&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;92&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;93&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&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; od.SyncMethod = opDesc.SyncMethod;&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;94&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;95&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&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; &lt;span style="color: green;"&gt;// remember to add this OperationDescription to the service contract&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;96&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&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; opsToAdd.Add(od);&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;97&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&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;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;98&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&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;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;99&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&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;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;100&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;101&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&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 style="color: green;"&gt;// add the cloned operation descriptions to the ServiceContract&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;102&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&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 style="color: blue;"&gt;foreach&lt;/span&gt; (OperationDescription od &lt;span style="color: blue;"&gt;in&lt;/span&gt; opsToAdd)&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;103&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&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; se.Contract.Operations.Add(od);&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;104&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;105&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;base&lt;/span&gt;.OnOpening();&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;106&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;107&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; TraceMe(&lt;span style="color: rgb(163, 21, 21);"&gt;""&lt;/span&gt;);&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;108&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; TraceMe(&lt;span style="color: rgb(163, 21, 21);"&gt;""&lt;/span&gt;);&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;109&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;110&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;111&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/font&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p mce_keep="true"&gt;&lt;font family="Calibri"&gt;You can see on lines 58 through 96, the OperationDescription for a marked operation gets cloned. Then on line 103, the cloned operation gets added into the ServiceContract.&amp;nbsp; &lt;/font&gt;&lt;/p&gt;

&lt;p mce_keep="true"&gt;&lt;font family="Calibri"&gt;The operation in the service interface looks the same as any operation, except it is marked with an attribute, like this: &lt;/font&gt;&lt;/p&gt;


&lt;div style="border: 1pt solid windowtext; padding: 2pt; background: white none repeat scroll 0% 0%; font-size: 9pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: black; font-family: Consolas,Courier New; line-height: 98%;"&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; [OperationContract]&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; [ionic.samples.WcfRest.DynamicContentType]&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; [WebGet(&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;4&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; BodyStyle = WebMessageBodyStyle.Bare,&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;5&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; UriTemplate = &lt;span style="color: rgb(163, 21, 21);"&gt;"dyn/{orderId}"&lt;/span&gt;)]&lt;/font&gt;&lt;/p&gt;

&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6&lt;/font&gt;&lt;/span&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; ReplyMsg GetOrderInfoEx(&lt;span style="color: blue;"&gt;string&lt;/span&gt; orderId);&lt;/font&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p mce_keep="true"&gt;&lt;font family="Calibri"&gt;The UriTemplate gets changed transparently at runtime by the custom service host.&amp;nbsp; The effective UriTemplate is "dyn/{orderId}/json" for the JSON flavor, and "dyn/{orderId}/xml for the plain-old-XML flavor. &lt;/font&gt;&lt;/p&gt;

&lt;p mce_keep="true"&gt;&lt;font family="Calibri"&gt;This service host works in self-hosted apps as well as those hosted within IIS. Not exactly what Kyle asked for but this could do the trick for some of you.&amp;nbsp; The code is attached to this post.&lt;/font&gt;&lt;/p&gt;

&lt;p mce_keep="true"&gt;&lt;font family="Calibri"&gt;Be sure to test thoroughly before you use this in production apps. &lt;/font&gt;&lt;/p&gt;

&lt;p mce_keep="true"&gt;&lt;font family="Calibri"&gt;Cheers!&lt;/font&gt;&lt;/p&gt;

&lt;p mce_keep="true"&gt;&lt;font family="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;&lt;font family="Calibri"&gt;&lt;font color="red"&gt;&lt;i&gt;[Addendum: I think you may be able to modify this custom &lt;a href="http://msdn2.microsoft.com/en-us/library/system.servicemodel.servicehost.aspx"&gt;ServiceHost&lt;/a&gt; idea slightly to do Content-Type negotiation based on the Accept header. You may be able to use the a slightly modified version of this ServiceHost, that clones specially marked OperationDescriptions. Along with that, add an &lt;a href="http://msdn2.microsoft.com/en-us/library/system.servicemodel.description.iendpointbehavior.aspx"&gt;IEndpointBehavior&lt;/a&gt; that sets a modified &lt;a href="http://msdn2.microsoft.com/en-us/library/system.servicemodel.dispatcher.dispatchruntime.operationselector.aspx"&gt;OperationSelector&lt;/a&gt;. Then, within your own selector you could examine the request headers and then choose the operation you want.]&lt;/i&gt; &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;font family="Calibri"&gt;&lt;/font&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8351948" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/dotnetinterop/attachment/8351948.ashx" length="6788" type="text/plain" /><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/Interop/default.aspx">Interop</category><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/WCF/default.aspx">WCF</category><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/REST/default.aspx">REST</category><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/JSON/default.aspx">JSON</category></item><item><title>Standalone JSON library in .NET on CodePlex</title><link>http://blogs.msdn.com/dotnetinterop/archive/2008/03/26/standalone-json-library-in-net-on-codeplex.aspx</link><pubDate>Wed, 26 Mar 2008 21:50:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8337208</guid><dc:creator>DotNetInterop</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/dotnetinterop/comments/8337208.aspx</comments><wfw:commentRss>http://blogs.msdn.com/dotnetinterop/commentrss.aspx?PostID=8337208</wfw:commentRss><description>&lt;P&gt;As you know, because you are such a FAITHFUL reader of this blog, there is new JSON support on WCF for version 3.5.&amp;nbsp; The way you get JSON though, would be only through a service interface. But what if, for whatever reason, you cannot use .NET 3.5 (like maybe the corp standard where you work is still on .NET 3.0), but you still want to play with JSON on the wire. &lt;/P&gt;
&lt;P&gt;Now there's a easy-to-use standalone JSON library for .NET on CodePlex. &lt;/P&gt;
&lt;P&gt;&lt;A href="http://james.newtonking.com/pages/json-net.aspx"&gt;http://james.newtonking.com/pages/json-net.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Check it out!&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8337208" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/Interop/default.aspx">Interop</category><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/REST/default.aspx">REST</category><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/JSON/default.aspx">JSON</category></item><item><title>Google Social Graph API via C#</title><link>http://blogs.msdn.com/dotnetinterop/archive/2008/03/26/google-social-graph-api-via-c.aspx</link><pubDate>Wed, 26 Mar 2008 19:40:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8337188</guid><dc:creator>DotNetInterop</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/dotnetinterop/comments/8337188.aspx</comments><wfw:commentRss>http://blogs.msdn.com/dotnetinterop/commentrss.aspx?PostID=8337188</wfw:commentRss><description>&lt;P&gt;Here's something different for a blog that generally focuses on enterprisey technologies. A .NET guy in Denmark built a C# wrapper on Google's Social Graph API.&amp;nbsp; The Social Graph API exposes its data in JSON only; I guess it is designed to be consumed by web pages.&amp;nbsp; This dev put a C# wrapper together that can be used in any .NET app, including in code-behind in ASP.NET pages. &lt;/P&gt;
&lt;P&gt;Check it out. &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blog.madskristensen.dk/post/Build-your-online-social-graph.aspx" mce_href="http://blog.madskristensen.dk/post/Build-your-online-social-graph.aspx"&gt;http://blog.madskristensen.dk/post/Build-your-online-social-graph.aspx&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8337188" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/Interop/default.aspx">Interop</category><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/Google/default.aspx">Google</category><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/JSON/default.aspx">JSON</category><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/web2.0/default.aspx">web2.0</category></item></channel></rss>