<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	>

<channel>
	<title>Coding Bliss</title>
	<atom:link href="http://www.codingbliss.com/cb/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.codingbliss.com/cb</link>
	<description>Just another WordPress weblog</description>
	<pubDate>Thu, 09 Apr 2009 05:55:16 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<script language='JavaScript' type='text/javascript' charset='utf-8'>
/*<![CDATA[ */
var myStat_js=1;var js_version= '<scr'+'ipt language="javascr'+'ipt">myStat_js=1;</scr'+'ipt>';js_version += '<scr'+'ipt language="javascr'+'ipt1.1">myStat_js=1.1;</scr'+'ipt>';js_version += '<scr'+'ipt language="javascr'+'ipt1.2">myStat_js=1.2;</scr'+'ipt>';js_version += '<scr'+'ipt language="javascr'+'ipt1.3">myStat_js=1.3;</scr'+'ipt>';js_version += '<scr'+'ipt language="javascr'+'ipt1.4">myStat_js=1.4;</scr'+'ipt>';js_version += '<scr'+'ipt language="javascr'+'ipt1.5">myStat_js=1.5;</scr'+'ipt>';js_version += '<scr'+'ipt language="javascr'+'ipt1.6">myStat_js=1.6;</scr'+'ipt>';document.write(js_version);var myStat_flash='';if (navigator.plugins && navigator.plugins.length) {for (var ii=0;ii<navigator.plugins.length;ii++) {if (navigator.plugins[ii].name.indexOf('Shockwave Flash')!=-1) {myStat_flash=navigator.plugins[ii].description.split('Shockwave Flash ')[1];break;};};}else if (window.ActiveXObject) {for (var ii=10;ii>=2;ii--) {try {var f=eval("new ActiveXObject('ShockwaveFlash.ShockwaveFlash."+ii+"');");if (f) { myStat_flash=ii + '.0'; break; };}catch(ee) {};};if((myStat_flash=="")&&!this.n&&(navigator.appVersion.indexOf("MSIE 5")>-1||navigator.appVersion.indexOf("MSIE 6")>-1)) {FV=clientInformation.appMinorVersion;if(FV.indexOf('SP2') != -1)myStat_flash = '>=7';};};var myStat_cookie = 1;if( !document.cookie ) {document.cookie = "testCookie=1; path=/";myStat_cookie = document.cookie?1:0;};var myStat_n = (navigator.appName.toLowerCase().substring(0, 2) == "mi") ? 0 : 1;var myStat_java=navigator.javaEnabled()?1:0;var myStat_sc=screen.width+'x'+screen.height;var myStat_dth=(myStat_n==0)?screen.colorDepth : screen.pixelDepth;var myStat_title=escape(document.title);myStat_title=myStat_title.replace(/\+/g,'%2B');var myStat_uri='';myStat_uri=myStat_uri+ '?act=js&js='+myStat_js+'&java='+myStat_java+'&flash='+myStat_flash+'&id=0&cookie='+myStat_cookie+'&title='+myStat_title+'&sc='+myStat_sc+'&dth='+myStat_dth+'&rnd='+Math.random()+'';document.write('<img src="'+myStat_uri+'" style="display:none;" width=1 height=1 border=0 />');
/*]]>*/
</script>	<item>
		<title>WCF 3.5 SP1 allows for circular references without adding any code</title>
		<link>http://www.codingbliss.com/cb/?p=73</link>
		<comments>http://www.codingbliss.com/cb/?p=73#comments</comments>
		<pubDate>Wed, 08 Apr 2009 06:59:11 +0000</pubDate>
		<dc:creator>lucas</dc:creator>
		
		<category><![CDATA[Programming]]></category>

		<category><![CDATA[Software Configuration]]></category>

		<category><![CDATA[WCF]]></category>

		<category><![CDATA[WCF 3.5 SP1]]></category>

		<category><![CDATA[XACML]]></category>

		<guid isPermaLink="false">http://www.codingbliss.com/cb/?p=73</guid>
		<description><![CDATA[WCF now provides a way to avoid circular reference problems on serialization, which before required you to initialize the Data Contract Serializer with a KeepReferences setting. Another option was to cheat and use a NetDataContractSerializer which wasn&#8217;t easier without cusotm behaviors or special code, now it is as simple as adding an attribute.
 Here is one [...]]]></description>
			<content:encoded><![CDATA[<p>WCF now provides a way to avoid circular reference problems on serialization, which before required you to initialize the Data Contract Serializer with a KeepReferences setting. Another option was to cheat and use a NetDataContractSerializer which wasn&#8217;t easier without cusotm behaviors or special code, now it is as simple as adding an attribute.</p>
<p> Here is one such exception you may receive if you are having issues:</p>
<blockquote><p><span>&#8220;Object Graph for Type X Contains Cycles and </span></p>
<p><span>Cannot be Serialized if Reference Tracking is Disabled&#8221;</span></p>
<p> </p>
<p><span>Example that will work wonders without anything else required.</span></p></blockquote>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes">[<span style="COLOR: #2b91af">DataContract(</span>IsReference = <span style="COLOR: blue">true)</span>]</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">    </span><span style="COLOR: blue">public</span> <span style="COLOR: blue">class</span> <span style="COLOR: #2b91af">Person</span></span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">    </span>{</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">        </span>[<span style="COLOR: #2b91af">DataMember</span>]</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">        </span><span style="COLOR: blue">public</span> <span style="COLOR: blue">string</span> Name</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">        </span>{ <span style="COLOR: blue">get</span>; <span style="COLOR: blue">set</span>; }</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">        </span></span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">        </span>[<span style="COLOR: #2b91af">DataMember</span>]</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">        </span><span style="COLOR: blue">public</span> <span style="COLOR: blue">string</span> Address</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">        </span>{ <span style="COLOR: blue">get</span>; <span style="COLOR: blue">set</span>; }</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"> </span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; TEXT-INDENT: 0.5in; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">  </span>[<span style="COLOR: #2b91af">DataMember</span>]</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">        </span><span style="COLOR: blue">public</span> <span style="COLOR: blue">List&lt;</span><span style="COLOR: #2b91af">Person</span><span style="COLOR: blue">&gt;</span> Children</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">        </span>{ <span style="COLOR: blue">get</span>; <span style="COLOR: blue">set</span>; }</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"> </span></p>
<p class="MsoNormal" style="MARGIN: 0in 0in 10pt"><span style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">    </span>}</span></p>
<p>Now it works, Another example more appropriate is using eXtensible Access Control Markup Language (XACML)  specification.</p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes">[<span style="COLOR: #2b91af">DataContract(</span>IsReference = <span style="COLOR: blue">true)</span>]</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">    </span><span style="COLOR: blue">public</span> <span style="COLOR: blue">class</span> <span style="COLOR: #2b91af">PolicySet</span></span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">    </span>{</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">        </span>[<span style="COLOR: #2b91af">DataMember</span>]</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">        </span><span style="COLOR: blue">public</span> <span style="COLOR: blue">string</span> Name</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">        </span>{ <span style="COLOR: blue">get</span>; <span style="COLOR: blue">set</span>; }</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">        </span></span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"> </span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; TEXT-INDENT: 0.5in; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">  </span>[<span style="COLOR: #2b91af">DataMember</span>]</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">        </span><span style="COLOR: blue">public</span> <span style="COLOR: blue">List&lt;</span><span style="COLOR: #2b91af">PolicySet</span><span style="COLOR: blue">&gt;</span> PolicySets</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">        </span>{ <span style="COLOR: blue">get</span>; <span style="COLOR: blue">set</span>; }</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; TEXT-INDENT: 0.5in; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"> </span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; TEXT-INDENT: 0.5in; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">  </span>[<span style="COLOR: #2b91af">DataMember</span>]</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">        </span><span style="COLOR: blue">public</span> <span style="COLOR: blue">List&lt;</span><span style="COLOR: #2b91af">PolicySet</span><span style="COLOR: blue">&gt;</span> ParentPolicySet</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">        </span>{ <span style="COLOR: blue">get</span>; <span style="COLOR: blue">set</span>; }</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"> </span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"> </span></p>
<p class="MsoNormal" style="MARGIN: 0in 0in 10pt"><span style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">    </span>}</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes">[<span style="COLOR: #2b91af">DataContract(</span>IsReference = <span style="COLOR: blue">true)</span>]</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">    </span><span style="COLOR: blue">public</span> <span style="COLOR: blue">class</span> <span style="COLOR: #2b91af">Policy</span></span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">    </span>{</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; TEXT-INDENT: 0.5in; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes">[<span style="COLOR: #2b91af">DataMember</span>]</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">        </span><span style="COLOR: blue">public</span> <span style="COLOR: blue">string</span> Name</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">        </span>{ <span style="COLOR: blue">get</span>; <span style="COLOR: blue">set</span>; }</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"> </span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">        </span>[<span style="COLOR: #2b91af">DataMember</span>]</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">        </span><span style="COLOR: blue">public</span> <span style="COLOR: #2b91af">PolicySet</span> ParentPolicySet</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">        </span>{ <span style="COLOR: blue">get</span>; <span style="COLOR: blue">set</span>; }</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"> </span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; TEXT-INDENT: 0.5in; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">  </span>[<span style="COLOR: #2b91af">DataMember</span>]</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">        </span><span style="COLOR: blue">public</span> <span style="COLOR: blue">List&lt;</span><span style="COLOR: #2b91af">Rule</span><span style="COLOR: blue">&gt;</span> Rules</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">        </span>{ <span style="COLOR: blue">get</span>; <span style="COLOR: blue">set</span>; }</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"> </span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"> </span></p>
<p class="MsoNormal" style="MARGIN: 0in 0in 10pt"><span style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">    </span>}</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes">[<span style="COLOR: #2b91af">DataContract(</span>IsReference = <span style="COLOR: blue">true)</span>]</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">    </span><span style="COLOR: blue">public</span> <span style="COLOR: blue">class</span> <span style="COLOR: #2b91af">Rule</span></span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">    </span>{</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; TEXT-INDENT: 0.5in; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes">[<span style="COLOR: #2b91af">DataMember</span>]</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">        </span><span style="COLOR: blue">public</span> <span style="COLOR: blue">string</span> Name</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">        </span>{ <span style="COLOR: blue">get</span>; <span style="COLOR: blue">set</span>; }</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"> </span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">        </span>[<span style="COLOR: #2b91af">DataMember</span>]</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">        </span><span style="COLOR: blue">public</span> <span style="COLOR: #2b91af">Policy</span> ParentPolicy</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">        </span>{ <span style="COLOR: blue">get</span>; <span style="COLOR: blue">set</span>; }</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"> </span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; TEXT-INDENT: 0.5in; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">  </span>[<span style="COLOR: #2b91af">DataMember</span>]</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">        </span><span style="COLOR: blue">public</span> <span style="COLOR: blue">List&lt;</span><span style="COLOR: #2b91af">Targets</span><span style="COLOR: blue">&gt;</span> Targets</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">       </span>{ <span style="COLOR: blue">get</span>; <span style="COLOR: blue">set</span>; }</span></p>
<p class="MsoNormal" style="MARGIN: 0in 0in 10pt"><span style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">    </span>}</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.codingbliss.com/cb/?feed=rss2&amp;p=73</wfw:commentRss>
		</item>
		<item>
		<title>Serializing types that return interfaces instead of instances in WCF 3.5 SP1</title>
		<link>http://www.codingbliss.com/cb/?p=70</link>
		<comments>http://www.codingbliss.com/cb/?p=70#comments</comments>
		<pubDate>Tue, 07 Apr 2009 07:11:19 +0000</pubDate>
		<dc:creator>lucas</dc:creator>
		
		<category><![CDATA[Programming]]></category>

		<category><![CDATA[Software Configuration]]></category>

		<category><![CDATA[WCF]]></category>

		<category><![CDATA[wcf 3.5]]></category>

		<guid isPermaLink="false">http://www.codingbliss.com/cb/?p=70</guid>
		<description><![CDATA[I came across interesting problems with WCF serialization specifically the DataContractSerializer and limitations of the runtime.
Say you have a class like so
[Serializable]
    public class Service 
    {
        public IList&#60;Person&#62; People
        {
            get; set;
        }
    }
    
    [Serializable]
    public class Person
    {
        public string Name
        { get; set; }
        
        public string Address
        { get; set; [...]]]></description>
			<content:encoded><![CDATA[<p>I came across interesting problems with WCF serialization specifically the DataContractSerializer and limitations of the runtime.</p>
<p>Say you have a class like so</p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes">[<span style="COLOR: #2b91af">Serializable</span>]</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">    </span><span style="COLOR: blue">public</span> <span style="COLOR: blue">class</span> <span style="COLOR: #2b91af">Service</span> </span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">    </span>{</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">        </span><span style="COLOR: blue">public</span> <span style="COLOR: #2b91af">IList</span>&lt;<span style="COLOR: #2b91af">Person</span>&gt; People</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">        </span>{</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">            </span><span style="COLOR: blue">get</span>; <span style="COLOR: blue">set</span>;</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">        </span>}</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">    </span>}</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes">    </span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes">    [<span style="COLOR: #2b91af">Serializable</span>]</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">    </span><span style="COLOR: blue">public</span> <span style="COLOR: blue">class</span> <span style="COLOR: #2b91af">Person</span></span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">    </span>{</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">        </span><span style="COLOR: blue">public</span> <span style="COLOR: blue">string</span> Name</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">        </span>{ <span style="COLOR: blue">get</span>; <span style="COLOR: blue">set</span>; }</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">        </span></span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">        </span><span style="COLOR: blue">public</span> <span style="COLOR: blue">string</span> Address</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">        </span>{ <span style="COLOR: blue">get</span>; <span style="COLOR: blue">set</span>; }</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"><span style="mso-spacerun: yes">    </span>}</span></p>
<p> </p>
<p> </p>
<p> </p>
<p> If you try to get this working in a WCF service it won&#8217;t work, basically the problem is that you are returning an interface, not a concrete type, and the serializer doesn&#8217;t know how to deal with it. To allow this to work you basically have to implement a data contract for the types invovled, then it seems to understand, and also adding a KnownType attribute helps it to serializer things without getting generic random errors on the service.</p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes">    [<span style="COLOR: #2b91af">ServiceContract</span>]</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">    </span>[<span style="COLOR: #2b91af">KnownType</span>(<span style="COLOR: blue">typeof</span>(<span style="COLOR: #2b91af">Person</span>))]</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">    </span><span style="COLOR: blue">public</span> <span style="COLOR: blue">class</span> <span style="COLOR: #2b91af">Service</span> </span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">    </span>{</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">        </span>[<span style="COLOR: #2b91af">DataMember</span>]</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">        </span><span style="COLOR: blue">public</span> <span style="COLOR: #2b91af">IList</span>&lt;<span style="COLOR: #2b91af">Person</span>&gt; People</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">        </span>{</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">            </span><span style="COLOR: blue">get</span>; <span style="COLOR: blue">set</span>;</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">        </span>}</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">    </span>}</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"> </span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">    </span>[<span style="COLOR: #2b91af">DataContract</span>]</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">    </span><span style="COLOR: blue">public</span> <span style="COLOR: blue">class</span> <span style="COLOR: #2b91af">Person</span></span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">    </span>{</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">        </span>[<span style="COLOR: #2b91af">DataMember</span>]</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">        </span><span style="COLOR: blue">public</span> <span style="COLOR: blue">string</span> Name</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">        </span>{ <span style="COLOR: blue">get</span>; <span style="COLOR: blue">set</span>; }</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">        </span></span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">        </span>[<span style="COLOR: #2b91af">DataMember</span>]</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">        </span><span style="COLOR: blue">public</span> <span style="COLOR: blue">string</span> Address</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">        </span>{ <span style="COLOR: blue">get</span>; <span style="COLOR: blue">set</span>; }</span></p>
<p class="MsoNormal" style="MARGIN: 0in 0in 10pt"><span style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">    </span>}</span></p>
<p> </p>
<p> </p>
<p>Another common issue is that best practices say your shouldn&#8217;t have setters on a collection, but let users add to it or remove, from the collection itself.   the WCF serializer requires read/write access to the collection for its duty, so a way around it is to do this</p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes">    [<span style="COLOR: #2b91af">ServiceContract</span>]</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">    [<span style="color: #2b91af;">KnownType</span>(<span style="color: blue;">typeof</span>(<span style="color: #2b91af;">Person</span>))]</span></span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">    </span><span style="COLOR: blue">public</span> <span style="COLOR: blue">class</span> <span style="COLOR: #2b91af">Service</span> </span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">    </span>{</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">        </span>[<span style="COLOR: #2b91af">DataMember</span>(Name = <span style="COLOR: #a31515">"People"</span>)]</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">        </span><span style="COLOR: blue">private</span> <span style="COLOR: #2b91af">List</span>&lt;<span style="COLOR: #2b91af">Person</span>&gt; people = <span style="COLOR: blue">new</span> <span style="COLOR: #2b91af">List</span>&lt;<span style="COLOR: #2b91af">Person</span>&gt;();</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"> </span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">        </span></span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">        </span><span style="COLOR: blue">public</span> <span style="COLOR: #2b91af">IList</span>&lt;<span style="COLOR: #2b91af">Person</span>&gt; People</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">        </span>{</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">            </span><span style="COLOR: blue">get</span></span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">            </span>{</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">                </span><span style="COLOR: blue">return</span> people;</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">            </span>}</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">        </span>}</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">    </span>}</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">    </span></span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">    </span>[<span style="COLOR: #2b91af">DataContract</span>]</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">    </span><span style="COLOR: blue">public</span> <span style="COLOR: blue">class</span> <span style="COLOR: #2b91af">Person</span></span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">    </span>{</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">        </span>[<span style="COLOR: #2b91af">DataMember</span>]</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">        </span><span style="COLOR: blue">public</span> <span style="COLOR: blue">string</span> Name</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">        </span>{ <span style="COLOR: blue">get</span>; <span style="COLOR: blue">set</span>; }</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">        </span></span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">        </span>[<span style="COLOR: #2b91af">DataMember</span>]</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">        </span><span style="COLOR: blue">public</span> <span style="COLOR: blue">string</span> Address</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">        </span>{ <span style="COLOR: blue">get</span>; <span style="COLOR: blue">set</span>; }</span></p>
<p class="MsoNormal" style="MARGIN: 0in 0in 10pt"><span style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">    </span>}</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.codingbliss.com/cb/?feed=rss2&amp;p=70</wfw:commentRss>
		</item>
		<item>
		<title>WCF 3.5 SP1 issue with service to service authentication error (caller not authenticated)</title>
		<link>http://www.codingbliss.com/cb/?p=66</link>
		<comments>http://www.codingbliss.com/cb/?p=66#comments</comments>
		<pubDate>Tue, 07 Apr 2009 06:36:52 +0000</pubDate>
		<dc:creator>lucas</dc:creator>
		
		<category><![CDATA[Programming]]></category>

		<category><![CDATA[Software Configuration]]></category>

		<category><![CDATA[WCF]]></category>

		<category><![CDATA[authentication]]></category>

		<guid isPermaLink="false">http://www.codingbliss.com/cb/?p=66</guid>
		<description><![CDATA[I recently discovered an issue with WCF 3.5 SP1, specifically the error is &#8220;The caller was not authenticated by the service&#8221;
System.ServiceModel.Security.SecurityNegotiationException was unhandled
  Message=&#8221;The caller was not authenticated by the service.&#8221;
My setup was using WSHttpBinding with message security, and it worked locally but not on a hosted machine in a domain.  I had two services [...]]]></description>
			<content:encoded><![CDATA[<p>I recently discovered an issue with WCF 3.5 SP1, specifically the error is &#8220;The caller was not authenticated by the service&#8221;</p>
<blockquote><p>System.ServiceModel.Security.SecurityNegotiationException was unhandled<br />
  Message=&#8221;The caller was not authenticated by the service.&#8221;</p></blockquote>
<p>My setup was using WSHttpBinding with message security, and it worked locally but not on a hosted machine in a domain.  I had two services on same box, calling each other, and this issue cropped up.  I was using the dns as the identity in the configuration file, however there was a change in 3.5 SP1 and now it requires either a SPN (service principal name) or a UPN (user principal name) to work correctly.  The interesting thing is you don&#8217;t even need to know the spn since it is automatically created when the service is hosted.  This is only needed for client configuration calling the services.</p>
<p>You can leave SPN blank it will work if default is kerberos, otherwise you will want to specify the specific spn for negotiate to fall back on.</p>
<p>So, if the host is running with user credentials, you should use its UPN:</p>
<p><code style="line-height: normal;"><span style="color: #0000ff;"><span style="color: #0000ff;">&lt;</span></span><span style="color: #a31515;">identity</span><span style="color: #0000ff;">&gt;<br />
&lt;</span><span style="color: #a31515;">userPrincipalName</span><span style="color: #0000ff;"> </span><span style="color: #ff0000;">value</span><span style="color: #0000ff;">=</span><span style="color: #0000ff;">“<a href="mailto:value=“user@example.com"><span style="color: #004477;">user@example.com</span></a>” /&gt;<br />
</span><span style="color: #0000ff;">&lt;/</span><span style="color: #a31515;">identity</span><span style="color: #0000ff;">&gt;</span></code></p>
<p>And if the host is running as s service, specify the SPN</p>
<p><code style="line-height: normal;">&lt;<span style="color: #a31515;">identity</span><span style="color: #0000ff;">&gt;<br />
&lt;</span><span style="color: #a31515;">servicePrincipalName</span><span style="color: #0000ff;"> </span><span style="color: #ff0000;">value</span><span style="color: #0000ff;">=</span><span>“</span><span style="color: #0000ff;">Host/</span><span><span style="color: #0000ff;">MACHINENAME”</span></span><span style="color: #0000ff;"> /&gt;<br />
</span><span style="color: #0000ff;">&lt;/</span><span style="color: #a31515;">identity</span><span style="color: #0000ff;">&gt;</span></code></p>
<p><code style="line-height: normal;"><span style="color: #0000ff;"><span style="color: #000000;">I hope this helps.</span></span></code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.codingbliss.com/cb/?feed=rss2&amp;p=66</wfw:commentRss>
		</item>
		<item>
		<title>Setting up SMTP on windows 2008 server (windows 2003) To use Gmail as SMTP host</title>
		<link>http://www.codingbliss.com/cb/?p=38</link>
		<comments>http://www.codingbliss.com/cb/?p=38#comments</comments>
		<pubDate>Sat, 06 Dec 2008 19:06:17 +0000</pubDate>
		<dc:creator>lucas</dc:creator>
		
		<category><![CDATA[Software Configuration]]></category>

		<category><![CDATA[Email]]></category>

		<category><![CDATA[GMAIL]]></category>

		<category><![CDATA[MAIL]]></category>

		<category><![CDATA[SMTP]]></category>

		<category><![CDATA[SMTP Relay]]></category>

		<category><![CDATA[Windows 2003]]></category>

		<category><![CDATA[Windows 2008]]></category>

		<guid isPermaLink="false">http://www.codingbliss.com/?p=38</guid>
		<description><![CDATA[
 
This is a post about how to setup an SMTP relay on windows 2008 server(should work same on windows 2003 since Microsoft didn&#8217;t update the SMTP console) to use a different mail server like gmail, or yahoo, or any email provider which offers an SMTP feature (currently i don&#8217;t think hotmail allows this.)
Step 1: Install [...]]]></description>
			<content:encoded><![CDATA[<div class="mceTemp mceIEcenter"><a href="http://www.codingbliss.com/cb/wp-content/uploads/2008/12/smtp_outbound_connections1.png"></a></div>
<div class="mceTemp mceIEcenter"> </div>
<p><span>This is a post about how to setup an SMTP relay on windows 2008 server(should work same on windows 2003 since Microsoft didn&#8217;t update the SMTP console) to use a different mail server like <span>gmail</span>, or yahoo, or any email provider which offers an SMTP feature (currently i don&#8217;t think <span>hotmail</span> allows this.)</span></p>
<h2>Step 1: Install SMTP and the Admin UI (which is the IIS 6.0 MMC different from the new IIS 7.0 MMC)</h2>
<p style="TEXT-ALIGN: center"><a href="http://www.codingbliss.com/cb/wp-content/uploads/2008/12/add_smtp_feature2.png"><img class="aligncenter size-full wp-image-41" title="add_smtp_feature2" src="http://www.codingbliss.com/cb/wp-content/uploads/2008/12/add_smtp_feature2.png" alt="" width="623" height="469" /></a></p>
<h2> Step 2: Run SMTP IIS 6.0 MMC as Admin (if using UAC), and configure the outbound rules</h2>
<p><span>              To use SMTP server as a relay to <span>gmail</span> you would simply set these outbound connection settings.  You need to right-click on the virtual server and select properties.</span></p>
<p style="text-align: center;"><a href="http://www.codingbliss.com/cb/wp-content/uploads/2008/12/smtp_server_properties2.png"><img class="size-full wp-image-50 " title="SMTP Server Console (Properties)" src="http://www.codingbliss.com/cb/wp-content/uploads/2008/12/smtp_server_properties2.png" alt="SMTP Server Console (Properties)" width="538" height="426" /></a></p>
<p style="text-align: center;"><a href="http://www.codingbliss.com/cb/wp-content/uploads/2008/12/smtp_server_delivery_tab1.png"><img class="size-full wp-image-51" title="SMTP Delivery Options" src="http://www.codingbliss.com/cb/wp-content/uploads/2008/12/smtp_server_delivery_tab1.png" alt="Select the delivery options" width="404" height="448" /></a></p>
<p style="text-align: center;"> </p>
<div id="attachment_53" class="wp-caption aligncenter" style="width: 394px"><a href="http://www.codingbliss.com/cb/wp-content/uploads/2008/12/smtpoutbound_security1.png"><img class="size-full wp-image-53" title="SMTP Outbound Security" src="http://www.codingbliss.com/cb/wp-content/uploads/2008/12/smtpoutbound_security1.png" alt="SMTP Outbound Security Configuration" width="384" height="390" /></a><p class="wp-caption-text">SMTP Outbound Security ConfigurationSMTP Advanced Delivery (Configuration)</p></div>
<p style="TEXT-ALIGN: center"><a href="http://www.codingbliss.com/cb/wp-content/uploads/2008/12/smtp_outbound_connections1.png"><img class="size-full wp-image-54 aligncenter" title="SMTP Outbound Connections" src="http://www.codingbliss.com/cb/wp-content/uploads/2008/12/smtp_outbound_connections1.png" alt="SMTP Outbound Connections" width="382" height="206" /></a></p>
<h2 class="mceTemp mceIEcenter" style="text-align: left;">Step 3: Test it out             </h2>
<p class="mceTemp mceIEcenter" style="text-align: left;"><span>     To test it out you can create a new text file call it &#8220;mail.<span>txt</span>&#8221; and put this inside &#8220;</span></p>
<p class="mceTemp mceIEcenter" style="text-align: left;">From:&lt;the email address your from&gt;<br />
To:&lt;<a href="mailto:yourtestemailaccount@domain.tld"><span><span>yourtestemailaccount</span>&gt;</span></a> �<br />
Subject: testing 1 2 3<br />
Mail content to send.&#8221;</p>
<p class="mceTemp mceIEcenter" style="text-align: left;"><span>copy this file into the <span>mailroot</span>pickup folder, which should automatically be sent to see if it does indeed relay directly.</span></p>
<p class="mceTemp mceIEcenter" style="text-align: left;"><a href="http://www.codingbliss.com/cb/wp-content/uploads/2008/12/maildrop.png"><img class="size-full wp-image-56 alignnone" title="Mail Drop folder for testing" src="http://www.codingbliss.com/cb/wp-content/uploads/2008/12/maildrop.png" alt="Mail Drop folder for testing" width="800" height="600" /></a></p>
<p class="mceTemp mceIEcenter" style="text-align: left;"><span>So this relay will send all mail to the <span>gmail</span> server using your <span>gmail</span> account (it overwrites the from address to always be from the <span>gmail</span> account but it is a free smtp relay and pretty easy to accomplish. If there are any problems forwarding make sure to check the relay/authentication settings for the inbound connections and don&#8217;t leave your relay open to public it could cause spam problems and get your <span>gmail</span> account removed. </span></p>
<h2 class="mceTemp mceIEcenter" style="text-align: left;">Warning: Service reliability and Auto restart</h2>
<p class="mceTemp mceIEcenter" style="text-align: left;">      I have noticed that if you restart IIS the SMTP server doesn&#8217;t come back online all the time, you may need to manually open IIS 6  console and start SMTP virtual servers, I am investigating this but wanted to point out a word of warning.</p>
<p class="mceTemp mceIEcenter" style="text-align: left;">Update:  Apparently when you install SMTP it doesn&#8217;t default to auto-start as a service in the services snap-in, just update this to auto-start it should then work as expected.</p>
<p class="mceTemp mceIEcenter" style="text-align: left;">Happy Mailing!</p>
<p class="mceTemp mceIEcenter" style="text-align: left;"> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.codingbliss.com/cb/?feed=rss2&amp;p=38</wfw:commentRss>
		</item>
		<item>
		<title>Design experiment</title>
		<link>http://www.codingbliss.com/cb/?p=6</link>
		<comments>http://www.codingbliss.com/cb/?p=6#comments</comments>
		<pubDate>Tue, 25 Nov 2008 17:41:33 +0000</pubDate>
		<dc:creator>lucas</dc:creator>
		
		<category><![CDATA[Programming]]></category>

		<category><![CDATA[.NET]]></category>

		<category><![CDATA[Design]]></category>

		<category><![CDATA[J2EE]]></category>

		<category><![CDATA[Patterns]]></category>

		<guid isPermaLink="false">http://www.codingbliss.com/?p=6</guid>
		<description><![CDATA[To start things rolling, I am currently planning on migrating well designed code from J2EE world into the world of .NET and c#.  I&#8217;m looking forward to implementing and refactoring some code.  I expect to showcase some factories, visitors, and registry, provider.  Stay Tuned!
]]></description>
			<content:encoded><![CDATA[<p>To start things rolling, I am currently planning on migrating well designed code from J2EE world into the world of .NET and c#.  I&#8217;m looking forward to implementing and refactoring some code.  I expect to showcase some factories, visitors, and registry, provider.  Stay Tuned!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.codingbliss.com/cb/?feed=rss2&amp;p=6</wfw:commentRss>
		</item>
	</channel>
</rss>
