<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.microsoft.co.il/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>Gadi Berqowitz&amp;#39;s Blog</title><link>http://blogs.microsoft.co.il/blogs/gadib/</link><description>Traveling through the .NET world</description><dc:language>en</dc:language><generator>CommunityServer 2007.1 (Build: 20917.1142)</generator><item><title>My brand new Hebrew blog</title><link>http://blogs.microsoft.co.il/blogs/gadib/archive/2013/03/07/my-brand-new-hebrew-blog.aspx</link><pubDate>Thu, 07 Mar 2013 16:30:35 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1784575</guid><dc:creator>gadib</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.microsoft.co.il/blogs/gadib/archive/2013/03/07/my-brand-new-hebrew-blog.aspx#comments</comments><description>&lt;p&gt;I’ve became on official employee of &lt;a href="http://matrix.co.il/Pages/default.aspx"&gt;Matrix&lt;/a&gt;, some times ago, meaning that I’ve got a blog in their blogs community (&lt;a href="http://blogix.co.il/"&gt;Blogix&lt;/a&gt;).&lt;/p&gt;  &lt;p&gt;The “Blogix” blog is an Hebrew one and is covering technical things in a more “High level” approach, designed for development management , project management and anyone how would like to learn new stuff without the diving into it.&lt;/p&gt;  &lt;p&gt;The new blog covers new technologies like windows 8, windows store applications, HTML5, Web API and more. basically anything new from Microsoft development team.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/gadib/clip_image002_20E7CE14.jpg"&gt;&lt;img title="clip_image002" style="border-top:0px;border-right:0px;border-bottom:0px;border-left:0px;display:inline;" border="0" alt="clip_image002" src="http://blogs.microsoft.co.il/blogs/gadib/clip_image002_thumb_1724F74D.jpg" width="244" height="54" /&gt;&lt;/a&gt;&amp;#160;&lt;a href="http://blogs.microsoft.co.il/blogs/gadib/HTML5_Logo_512_61AEC5D8.png"&gt;&lt;img title="HTML5_Logo_512" style="border-top:0px;border-right:0px;border-bottom:0px;border-left:0px;display:inline;" border="0" alt="HTML5_Logo_512" src="http://blogs.microsoft.co.il/blogs/gadib/HTML5_Logo_512_thumb_412A16D7.png" width="176" height="90" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;So, if you’re an Hebrew reader , please step right in, I would really like to know what you think.&lt;/p&gt;  &lt;p&gt;I’m still planning to write more specific posts for developers in this blog.&lt;/p&gt;  &lt;p&gt;The new blog : &lt;u&gt;http://dotnet.blogix.co.il&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;Hope you enjoy it.&lt;/p&gt;  &lt;p&gt;Regards,&lt;/p&gt;  &lt;p&gt;Gadi.&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1784575" width="1" height="1"&gt;</description></item><item><title>SharePoint 2013 Preview</title><link>http://blogs.microsoft.co.il/blogs/gadib/archive/2012/07/17/sharepoint-2013-preview.aspx</link><pubDate>Tue, 17 Jul 2012 22:36:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1160265</guid><dc:creator>gadib</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.microsoft.co.il/blogs/gadib/archive/2012/07/17/sharepoint-2013-preview.aspx#comments</comments><description>&lt;p&gt;Time flies by and SharePoint 2013 (aka SharePoint 15) preview was already released (quite quietly I may add).&lt;/p&gt;  &lt;p&gt;The timeline of the official release has yet to be released but there&amp;#39;s some info regarding the new features.&lt;/p&gt;  &lt;p&gt;First of all, the existing services will make a return :&lt;/p&gt;  &lt;p&gt;· BSC (Business Connectivity services)&lt;/p&gt;  &lt;p&gt;· Search Services&lt;/p&gt;  &lt;p&gt;· PerformancePoint Services&lt;/p&gt;  &lt;p&gt;· Excel Services&lt;/p&gt;  &lt;p&gt;· InfoPath Services&lt;/p&gt;  &lt;p&gt;· Access Services&lt;/p&gt;  &lt;p&gt;· InfoPath Services&lt;/p&gt;  &lt;p&gt;· User Profile Service&lt;/p&gt;  &lt;p&gt;In addition, you can except the following expansions services:&lt;/p&gt;  &lt;p&gt;· Content Management Service&lt;/p&gt;  &lt;p&gt;· Translation Services&lt;/p&gt;  &lt;p&gt;· Workflow Services&lt;/p&gt;  &lt;p&gt;· SharePoint Quiz Client-Side Object Model Protocol&lt;/p&gt;  &lt;p&gt;· Education Services&lt;/p&gt;  &lt;p&gt;· Work Management Service&lt;/p&gt;  &lt;p&gt;·&lt;/p&gt;  &lt;p&gt;The Education services seems the most interesting and should be a major feature in the 2013 version, unfortunately there are no available details regarding these services.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;Additional Functionality&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;· Following the metro / windows 8 and apple marketing models, we could expect a new marketplace model for vendors to deploy and market their SharePoint based products and services.&lt;/p&gt;  &lt;p&gt;That should become very useful for both developers and clients.&lt;/p&gt;  &lt;p&gt;· There are also some changes to the object models such as the SPWeb and SPApp models. I will bring more details as it will be available.&lt;/p&gt;  &lt;p&gt;· There are some rumors regarding support for SQL Azure database, but nothing is confirmed at this point.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;Let me have the goods!&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;You can download the preview version for free for the TechNet evaluation center &lt;a href="http://technet.microsoft.com/en-US/evalcenter/hh973397.aspx?wt.mc_id=TEC_121_1_4"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Additional data and resources can be found &lt;a href="http://technet.microsoft.com/en-US/evalcenter/hh973398.aspx"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1160265" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/gadib/archive/tags/SharePoint/default.aspx">SharePoint</category></item><item><title>Commerce Server 2009 profiles cache</title><link>http://blogs.microsoft.co.il/blogs/gadib/archive/2012/03/01/commerce-server-2009-profiles-cache.aspx</link><pubDate>Thu, 01 Mar 2012 22:15:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1023758</guid><dc:creator>gadib</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.microsoft.co.il/blogs/gadib/archive/2012/03/01/commerce-server-2009-profiles-cache.aspx#comments</comments><description>&lt;p&gt;Commerce Server 2009 uses cache for all its modules, including the profiles system.&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;It&amp;#39;s uses cache for the obvious reasons : performance, data integrity and so on.&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;While working with the Commerce Server 2009 MCF or the old 2007 API, you should be safe.&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;Those APIs are responsible to update the cache via a dedicated cache handler.&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;There might be times when you would like to run scripts directly to the profiles database in the development, testing, staging or production environments.&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;If you do that, you should keep in mind that the cache should be updated / refreshed.&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;Configuring the profiles cache&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;While it cannot be configured via the web configuration file or any other configuration file or components,&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;You might want to configure the profiles service itself.&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;On more details on that you can find &lt;a href="http://blogs.msdn.com/b/maxakbar/archive/2007/02/07/how-to-control-the-profile-cache.aspx"&gt;here&lt;/a&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;Refreshing the profiles cache&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;You might want to refresh manually the profiles cache to your Commerce Server business application or to your site.&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;You can do that using a special resource file (SiteCacheRefresh.axd). You can also control t he refresh cache using the applications&amp;#39; application pools related to them.&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;You can read &lt;a href="http://blogs.msdn.com/b/maxakbar/archive/2008/08/08/commerce-server-cache-refresh.aspx"&gt;here&lt;/a&gt; on exactly how to that.&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;For more information regarding the Commerce Server cache, go to this &lt;a href="http://msdn.microsoft.com/en-us/library/aa544712.aspx"&gt;MSDN article.&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1023758" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/gadib/archive/tags/Commerce+Server/default.aspx">Commerce Server</category></item><item><title>Internet Explorer 8 Performance Issues</title><link>http://blogs.microsoft.co.il/blogs/gadib/archive/2011/10/17/internet-explorer-8-performance-issues.aspx</link><pubDate>Mon, 17 Oct 2011 15:07:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:916936</guid><dc:creator>gadib</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.microsoft.co.il/blogs/gadib/archive/2011/10/17/internet-explorer-8-performance-issues.aspx#comments</comments><description>&lt;p&gt;Today&amp;#39;s web sites are getting richer and richer.&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;In the past rich web sites were usually web sites that were used for promotional purposes, today&amp;#39;s demands require that even the most complex web application, has to include rich and user-friendly UI.&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;so how exactly &amp;quot;old&amp;quot; browsers can hold up with this applications? What should be taken into consideration in the development phase?&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;Get the facts&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Now days, I&amp;#39;m leading a team that is developing a large e-commerce site for our customer. Beside advanced e-commerce features, the web application has a very rich UI that includes : high resolutions images, CSS expressions and a lot for JavaScript and jQuery code to support a rich and powerful user experience.&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;One of our customer&amp;#39;s main demands : full support for Internet Explorer 8, as about 60 percent of their customer use IE8 as their main browser.&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;Our first response is IE8 that big? Is it really still a popular browser in late 2011?&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;Using a quick check in StatCounter.com , we got our answer :&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/gadib/image005_49101F72.jpg"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image005" border="0" alt="image005" src="http://blogs.microsoft.co.il/blogs/gadib/image005_thumb_6CE8D0FF.jpg" width="607" height="393" /&gt;&lt;/a&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;It&amp;#39;s seems that IE8 is still the most popular browser of them all.&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;But why? If you&amp;#39;re using IE8, &amp;quot;Windows update&amp;quot; will remind you to upgrade to IE9 and if so , why won&amp;#39;t you upgrade?&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;Well, the plain answer to that is that while IE9 might be the best IE browser for you, if you have &amp;quot;Vista&amp;quot; or &amp;quot;Windows 7&amp;quot; OS, you aren&amp;#39;t so lucky if you&amp;#39;re still using &amp;quot;Windows XP&amp;quot;.&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;Ok, so our next question was &amp;quot;Are there really so much Windows XP users in late 2011&amp;quot;?&amp;#160; and again, StatCounter.com to the rescue :&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/gadib/image006_1BEB0CD7.jpg"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image006" border="0" alt="image006" src="http://blogs.microsoft.co.il/blogs/gadib/image006_thumb_74D04D94.jpg" width="610" height="395" /&gt;&lt;/a&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;Why my Internet Explorer has performance issues (version 8 edition)&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Although IE8 is such a popular browser is suffers for serious performance issues that should be addressed in the development phase.&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;Understanding those issues and taking them into consideration early on, should save you a lot for development hours.&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;Max connection&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;each browser has a definition of max connections per server , as defined in RFC2616 : &lt;i&gt;&amp;quot;C&lt;/i&gt;&lt;i&gt;lients that use persistent connections SHOULD limit the number of simultaneous connections that they maintain to a given server. A single-user client SHOULD NOT maintain more than 2 connections with any server or proxy.&amp;quot;&lt;/i&gt; &lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;What it&amp;#39;s means is that only 6 (or two narrowband) IE8 requests will be handled simultaneity. Most of the rich pages include tens of requests for the server like this :&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/gadib/image009_3CCE59B1.jpg"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image009" border="0" alt="image009" src="http://blogs.microsoft.co.il/blogs/gadib/image009_thumb_5FCEA554.jpg" width="715" height="300" /&gt;&lt;/a&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;You can see from this firebug screen shot the purple section in the time line represent pure waiting time for server.&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;Lucky for us, Firefox and Chrome decided they don&amp;#39;t follow this rule and supports 15 or more connections per server, that&amp;#39;s one of the main reasons they are faster.&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;So what can be done?&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;Max connection definition can be altered by the client&amp;#39;s browser &lt;a href="http://msdn.microsoft.com/en-us/library/cc304129(VS.85).aspx"&gt;like this&lt;/a&gt;, but assuming that you would like a more general approach there&amp;#39;s a work around.&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;Let&amp;#39;s say your web application domains is &lt;a href="http://mycompany.com/"&gt;mycompany.com&lt;/a&gt; . the max connection definition is by domain name , meaning that you could create for example this domain : &lt;a href="http://images.mycompany.com/"&gt;images.mycompany.com&lt;/a&gt; in your IIS entry, and the browser will automatically will duplicate the number of requests simultaneity.&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;Create another domain named : &lt;a href="http://resources.mycompany.com/"&gt;resources.mycompany.com&lt;/a&gt; for your CSS, JS and AXD files and there you go, you just maxed again the number of connections.&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;JavaScript&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;IE8 has some serious issues with rendering and running JavaScript files comparing to other browsers as you can see from the following test results for WebKit SunSpider&amp;#39;s benchmarks:&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/gadib/image010_1CA32727.gif"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image010" border="0" alt="image010" src="http://blogs.microsoft.co.il/blogs/gadib/image010_thumb_734BDF28.gif" width="618" height="416" /&gt;&lt;/a&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;With results like that you should really examine your rendered scripts to the client.&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;You can either make sure your code is optimized or write a different implementation for IE8.&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;Summary&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;When writing web application that should support IE8 (and most of the times they would have to), you should take into consideration the above results.&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;Consider using CDNS, consider creating a different domain from your images and other resources to max your connections.&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;Developers must be aware of those serious limitations from IE8 , fixing them in performance tuning will be hard and long hour.&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;Hope that helps.&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=916936" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/gadib/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.microsoft.co.il/blogs/gadib/archive/tags/IIS/default.aspx">IIS</category><category domain="http://blogs.microsoft.co.il/blogs/gadib/archive/tags/Management/default.aspx">Management</category><category domain="http://blogs.microsoft.co.il/blogs/gadib/archive/tags/Architecture/default.aspx">Architecture</category></item><item><title>WCF calls return HTTP 400 response</title><link>http://blogs.microsoft.co.il/blogs/gadib/archive/2011/08/08/wcf-calls-return-http-400-response.aspx</link><pubDate>Mon, 08 Aug 2011 15:20:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:881461</guid><dc:creator>gadib</dc:creator><slash:comments>12</slash:comments><comments>http://blogs.microsoft.co.il/blogs/gadib/archive/2011/08/08/wcf-calls-return-http-400-response.aspx#comments</comments><description>&lt;p&gt;I&amp;#39;ve been getting some general HTTP 400 while trying to invoke a certain WCF method.&lt;/p&gt;  &lt;p&gt;I&amp;#39;ve also noticed that it did not happened all the times but for some requests.&lt;/p&gt;  &lt;p&gt;HTTP 400 indicates that The Web server (running the Web site) thinks that the data stream sent by the client (e.g. your Web browser) was &amp;#39;malformed&amp;#39; i.e. did not respect the HTTP protocol completely. So the Web server was unable to understand the request and process it.&lt;/p&gt;  &lt;p&gt;I suspected that I was getting those errors for a large requests (I&amp;#39;m using an order service that get a list of items it should include in the order form), but the exception was a general web exception.&lt;/p&gt;  &lt;p&gt;So I decided to go deeper and test the WCF logs using the &lt;a href="http://msdn.microsoft.com/en-us/library/ms732023.aspx"&gt;SVC trace viewer&lt;/a&gt; which is a MUST tool to have when working with WCF.&lt;/p&gt;  &lt;p&gt;Scanning the logs for my error confirm my suspicions : &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/gadib/clip_image002_4AEF99AB.jpg"&gt;&lt;img src="http://blogs.microsoft.co.il/blogs/gadib/clip_image002_thumb_19347C56.jpg" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="clip_image002" alt="clip_image002" border="0" height="395" width="727" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;You can see on the right, that the actual exception is a service model protocol exception : &lt;i&gt;The maximum message size quota for incoming messages (65536) has been exceeded&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;I remembered that I&amp;#39;ve configured my binding (basic http) with all those properties:&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;bindings&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
      &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;basicHttpBinding&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;binding &lt;/span&gt;&lt;span style="color:red;"&gt;name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;basicHttpBinding&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;maxReceivedMessageSize&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;2147483647&lt;/span&gt;&amp;quot;
          &lt;span style="color:red;"&gt;transferMode&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;Buffered&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;&amp;gt;
          &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;readerQuotas &lt;/span&gt;&lt;span style="color:red;"&gt;maxDepth&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;2147483647&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;maxStringContentLength&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;2147483647&lt;/span&gt;&amp;quot;
            &lt;span style="color:red;"&gt;maxArrayLength&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;2147483647&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;maxBytesPerRead&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;2147483647&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;maxNameTableCharCount&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;2147483647&lt;/span&gt;&amp;quot; &lt;span style="color:blue;"&gt;/&amp;gt;
        &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;binding&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
      &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;basicHttpBinding&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
      &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;wsHttpBinding&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;binding &lt;/span&gt;&lt;span style="color:red;"&gt;name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;wsHttpBinding&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;maxReceivedMessageSize&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;2147483647&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;messageEncoding&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;Mtom&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;textEncoding&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;utf-16&lt;/span&gt;&amp;quot; &lt;span style="color:blue;"&gt;&amp;gt;
          &amp;lt;!-- &lt;/span&gt;&lt;span style="color:green;"&gt;transferMode=&amp;quot;Buffered&amp;quot; &lt;/span&gt;&lt;span style="color:blue;"&gt;--&amp;gt;
          &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;readerQuotas &lt;/span&gt;&lt;span style="color:red;"&gt;maxDepth&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;2147483647&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;maxStringContentLength&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;2147483647&lt;/span&gt;&amp;quot;
            &lt;span style="color:red;"&gt;maxArrayLength&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;2147483647&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;maxBytesPerRead&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;2147483647&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;maxNameTableCharCount&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;2147483647&lt;/span&gt;&amp;quot; &lt;span style="color:blue;"&gt;/&amp;gt;
        &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;binding&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
      &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;wsHttpBinding&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;bindings&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;The problem was that I didn&amp;#39;t add this configuration to the service definition so adding the following lines , solved it:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;service &lt;/span&gt;&lt;span style="color:red;"&gt;behaviorConfiguration&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;OrderServiceBehavior&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;Shufersal.Server.Services.OrderService&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;endpoint &lt;/span&gt;&lt;span style="color:red;"&gt;address&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&amp;quot; &lt;span style="color:red;"&gt;binding&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;basicHttpBinding&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;bindingConfiguration&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;basicHttpBinding&lt;/span&gt;&amp;quot;&lt;/pre&gt;

&lt;blockquote&gt;
  &lt;pre class="code"&gt; &lt;span style="color:red;"&gt;contract&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;Common.Contracts.ServiceContracts.IOrderService&lt;/span&gt;&amp;quot; &lt;span style="color:blue;"&gt;/&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;endpoint &lt;/span&gt;&lt;span style="color:red;"&gt;address&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;mex&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;binding&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;mexHttpBinding&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;contract&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;IMetadataExchange&lt;/span&gt;&amp;quot; &lt;span style="color:blue;"&gt;/&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;host&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
          &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;baseAddresses&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;add &lt;/span&gt;&lt;span style="color:red;"&gt;baseAddress&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;http://localhost:9000/OrderService&lt;/span&gt;&amp;quot; &lt;span style="color:blue;"&gt;/&amp;gt;
          &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;baseAddresses&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
        &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;host&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;service&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
      &lt;/span&gt;&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=881461" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/gadib/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.microsoft.co.il/blogs/gadib/archive/tags/C_2300_/default.aspx">C#</category></item><item><title>SharePoint 2010 - Unexpected error when trying to add user permissions</title><link>http://blogs.microsoft.co.il/blogs/gadib/archive/2011/07/31/sharepoint-2010-unexpected-error-when-trying-to-add-user-permissions.aspx</link><pubDate>Sun, 31 Jul 2011 20:46:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:878248</guid><dc:creator>gadib</dc:creator><slash:comments>12</slash:comments><comments>http://blogs.microsoft.co.il/blogs/gadib/archive/2011/07/31/sharepoint-2010-unexpected-error-when-trying-to-add-user-permissions.aspx#comments</comments><description>&lt;p&gt;I&amp;#39;ve encountered the following errors when trying to add some user permissions to my site:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/gadib/clip_image002_5C6EDF2A.jpg"&gt;&lt;img src="http://blogs.microsoft.co.il/blogs/gadib/clip_image002_thumb_59797A77.jpg" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="clip_image002" alt="clip_image002" border="0" height="232" width="521" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Lucky for me, I&amp;#39;m using &lt;a href="http://www.microsoft.com/systemcenter/en/us/avicode.aspx"&gt;AVI Code&lt;/a&gt; so I was able to spot the real problem:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/gadib/clip_image003_3DF47874.gif"&gt;&lt;img src="http://blogs.microsoft.co.il/blogs/gadib/clip_image003_thumb_5B865373.gif" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="clip_image003" alt="clip_image003" border="0" height="116" width="772" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;For some reason, simple text is marked as dangerous XSS request.&lt;/p&gt;  &lt;p&gt;The solution was to search for this page (&amp;quot;aclinv.aspx&amp;quot;) that can be found in &amp;quot;templates\layouts&amp;quot; folder and add the ValidateRequest=&amp;quot;false&amp;quot; attribute to the page.&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=878248" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/gadib/archive/tags/SharePoint/default.aspx">SharePoint</category></item><item><title>JavaScript and CSS versioning and minifying</title><link>http://blogs.microsoft.co.il/blogs/gadib/archive/2011/07/13/javascript-and-css-versioning-and-minifying.aspx</link><pubDate>Wed, 13 Jul 2011 15:49:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:858948</guid><dc:creator>gadib</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.microsoft.co.il/blogs/gadib/archive/2011/07/13/javascript-and-css-versioning-and-minifying.aspx#comments</comments><description>&lt;p&gt;if you developed web sites before JS and CSS versioning issues must be familiar to you. &lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;u&gt;Versioning&lt;/u&gt;&lt;/b&gt; &lt;/p&gt;&lt;p&gt;&lt;u&gt;The problem&lt;/u&gt; &lt;/p&gt;&lt;p&gt;You&amp;#39;ve gone live! Congratulations! You&amp;#39;ve got a great web site that include external JavaScript and CSS files. &lt;/p&gt;&lt;p&gt;Now you found a bug in your jQuery function or maybe you would like to implement a new style change. &lt;/p&gt;&lt;p&gt;Because the web browser download these files (images, static htmls, JS and CSS files and etc) the update won&amp;#39;t be reflected upon the user&amp;#39;s browser. &lt;/p&gt;&lt;p&gt;&lt;u&gt;The solution&lt;/u&gt; &lt;/p&gt;&lt;p&gt;Implementation a versioning mechanic for the files will include the version number in the filename and therefore the browser will consider this as a new file and will &lt;/p&gt;&lt;p&gt;Download it.  &lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;u&gt;Minifying&lt;/u&gt;&lt;/b&gt; &lt;/p&gt;&lt;p&gt;&lt;u&gt;The problem&lt;/u&gt; &lt;/p&gt;&lt;p&gt;JavaScript and CSS file can become quite large at times. If you think about most the files include white spaces that can be removed / compressed and save &lt;/p&gt;&lt;p&gt;Loading time from the user.  &lt;/p&gt;&lt;p&gt;&lt;u&gt;The solution&lt;/u&gt; &lt;/p&gt;&lt;p&gt;Minifying files usually used an algorithm for compressing not only the white spaces but reduces variable names and etc. &lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;u&gt;Introducing Client dependency framework&lt;/u&gt;&lt;/b&gt; &lt;/p&gt;&lt;p&gt;ClientDependency is a framework from Codeplex. &lt;/p&gt;&lt;p&gt;Using a single library file and some configuration you&amp;#39;ll be set to go, here are the steps to get you going: &lt;/p&gt;&lt;p&gt;1. Update the web.config file &lt;/p&gt;&lt;p&gt;· add config section:&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;section &lt;/span&gt;&lt;span style="color:red;"&gt;name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;clientDependency&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;type&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;ClientDependency.Core.Config.ClientDependencySection, ClientDependency.Core&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;· add http handler and module&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;httpHandlers&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
 &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;add &lt;/span&gt;&lt;span style="color:red;"&gt;verb&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;*&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;path&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;DependencyHandler.axd&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;type&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;ClientDependency.Core.CompositeFiles.CompositeDependencyHandler,&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt; ClientDependency.Core &amp;quot;/&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;httpHandlers&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;

&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;httpModules&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
 &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;add &lt;/span&gt;&lt;span style="color:red;"&gt;name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;ClientDependencyModule&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;type&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;ClientDependency.Core.Module.ClientDependencyModule, ClientDependency.Core&amp;quot;/&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;httpModules&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
&lt;/span&gt;&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;· add reference to the external config file&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;clientDependency &lt;/span&gt;&lt;span style="color:red;"&gt;configSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;config\ClientDependency.config&amp;quot; /&amp;gt;
&lt;/span&gt;&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;2. add the configuration file and set the version number (checkout the documentation in the link below for more details)
&lt;/p&gt;&lt;p&gt;3. add the dependency loader at the master page or web page&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;CD&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:maroon;"&gt;ClientDependencyLoader &lt;/span&gt;&lt;span style="color:red;"&gt;runat&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;server&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;id&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Loader&amp;quot; &amp;gt;
  &amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;Paths&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
  &amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;CD&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:maroon;"&gt;ClientDependencyPath &lt;/span&gt;&lt;span style="color:red;"&gt;Name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Styles&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;Path&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;~/Styles&amp;quot; /&amp;gt;
 &amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;CD&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:maroon;"&gt;ClientDependencyPath &lt;/span&gt;&lt;span style="color:red;"&gt;Name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;JS&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;Path&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;~/Scripts&amp;quot; /&amp;gt;
  &amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;Paths&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;CD&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:maroon;"&gt;ClientDependencyLoader&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
&lt;/span&gt;&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;span style="background:yellow;"&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="background:yellow;color:blue;"&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/span&gt;
&lt;p&gt;4. set the JS and CSS files&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;CD&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:maroon;"&gt;CssInclude &lt;/span&gt;&lt;span style="color:red;"&gt;runat&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;server&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ID&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;siteCss&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;FilePath&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;~/Styles/Site.css&amp;quot; /&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;CD&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:maroon;"&gt;JsInclude &lt;/span&gt;&lt;span style="color:red;"&gt;runat&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;server&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ID&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;GeneralJs&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;FilePath&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;/Scripts/General.js&amp;quot; /&amp;gt;
&lt;/span&gt;&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;Here&amp;#39;s how the scripts in the page source would look like:&lt;/p&gt;&lt;pre&gt;&lt;font size="2"&gt;&amp;lt;link rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; href=&amp;quot;&lt;/font&gt;&lt;a&gt;&lt;font size="2"&gt;DependencyHandler.axd?s=L1N0eWxlcy9TaXRlLmNzczs%3d&amp;amp;amp;t=Css&amp;amp;amp;cdv=2&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;&amp;quot; /&amp;gt;&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font size="2"&gt;&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;&lt;/font&gt;&lt;a&gt;&lt;font size="2"&gt;DependencyHandler.axd?s=L1NjcmlwdHMvR2VuZXJhbC5qczs%3d&amp;amp;amp;t=Javascript&amp;amp;amp;cdv=2&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;&amp;quot;&amp;gt;&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font size="2"&gt;&amp;lt;/script&amp;gt;&lt;/font&gt;&lt;/pre&gt;
&lt;p&gt;Checkout &lt;a href="http://clientdependency.codeplex.com/"&gt;ClientDependency project page&lt;/a&gt; for download and documentation details.&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=858948" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/gadib/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.microsoft.co.il/blogs/gadib/archive/tags/IIS/default.aspx">IIS</category><category domain="http://blogs.microsoft.co.il/blogs/gadib/archive/tags/Architecture/default.aspx">Architecture</category></item><item><title>Cross-Site request forgery - Web site attack</title><link>http://blogs.microsoft.co.il/blogs/gadib/archive/2011/06/30/cross-site-request-forgery-web-site-attack.aspx</link><pubDate>Thu, 30 Jun 2011 12:43:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:847654</guid><dc:creator>gadib</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.microsoft.co.il/blogs/gadib/archive/2011/06/30/cross-site-request-forgery-web-site-attack.aspx#comments</comments><description>&lt;p&gt;The web is full of security vulnerabilities, I&amp;#39;m going to describe some in my &lt;a href="http://blogs.microsoft.co.il/blogs/gadib"&gt;blog&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Here&amp;#39;s a one that most developers are not aware of it&amp;#39;s called &lt;b&gt;CSRF (Cross-Site request forgery)&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;It&amp;#39;s not a very common one but easily can be deadly.&lt;/p&gt;  &lt;p&gt;Unlike other security vulnerabilities that usually exploit the fact a user has some permissions to a specific site , this one depends on a simple fact that a site trust&amp;#39;s a user&amp;#39;s browser.&lt;/p&gt;  &lt;p&gt;Trusting the user browser means that a web site will trust the browser&amp;#39;s cookies without questioning the source of the cookies, very similar to session hijacking.&lt;/p&gt;  &lt;p&gt;Meaning is that if someone post a request to a site using your browser the site will accept this request , no questions asked.&lt;/p&gt;  &lt;p&gt;For example: a request to charge an order to an e-commerce site will look like this : &lt;a href="http://some-site.com/checkout.aspx?orderNumber=12345"&gt;http://some-site.com/checkout.aspx?orderNumber=12345&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;this site will checkout the following order to a customer which it&amp;#39;s details are stored in a cookie. basically anyone that uses this browser on the victim computer will just navigate to the site&lt;/p&gt;  &lt;p&gt;and the order will be checked out. Keep in mind that the order details include the shipping details.&lt;/p&gt;  &lt;p&gt;Ok, so sitting on the same PC is not exactly hacking, but check this out:&lt;/p&gt;  &lt;p&gt;Let&amp;#39;s say the hacker posts an message on a popular forum that will include a 1px image. Here&amp;#39;s&amp;nbsp; the image&amp;#39;s HTML:&lt;/p&gt;  &lt;p&gt;&amp;lt;img src=&amp;quot;&lt;a href="http://some-site.com/checkout.aspx?orderNumber=12345"&gt;http://some-site.com/checkout.aspx?orderNumber=12345&lt;/a&gt;&amp;quot;&amp;gt;&lt;/p&gt;  &lt;p&gt;Now when the victim reads the post the browser submit a request to the server using the browser&amp;#39;s cookie (if the cookie has not expired) and there you go!&lt;/p&gt;  &lt;p&gt;The hacker completed an order while using the victim credentials!&lt;/p&gt;  &lt;p&gt;Here&amp;#39;s a summary :&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/gadib/clip_image002_040A1840.gif"&gt;&lt;img src="http://blogs.microsoft.co.il/blogs/gadib/clip_image002_thumb_76575C37.gif" style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="clip_image002" alt="clip_image002" border="0" height="266" width="410" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;So what can be done?&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Like most web vulnerabilities, CSRF is very easy to solve:&lt;/p&gt;  &lt;p&gt;1. Consider creating an HTTP handler / module that will make sure that the HTTP referrer has not changed in the session&lt;/p&gt;  &lt;p&gt;2. Limit the lifetime of your cookies&lt;/p&gt;  &lt;p&gt;3. Double check / validate the user using a password popup and etc&lt;/p&gt;  &lt;p&gt;Wikipedia describes the vulnerability pretty straight-forward &lt;a href="http://en.wikipedia.org/wiki/Cross-site_request_forgery"&gt;here&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;You can find an Hebrew article that describe it in more detail &lt;a href="http://www.black-jack.co.il/csrf-the-enemy-resides-within/"&gt;here&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=847654" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/gadib/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.microsoft.co.il/blogs/gadib/archive/tags/Management/default.aspx">Management</category></item><item><title>WCF 4.0 Hebrew guide for beginner</title><link>http://blogs.microsoft.co.il/blogs/gadib/archive/2011/04/21/wcf-4-0-hebrew-guide-for-beginner.aspx</link><pubDate>Thu, 21 Apr 2011 16:11:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:819975</guid><dc:creator>gadib</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.microsoft.co.il/blogs/gadib/archive/2011/04/21/wcf-4-0-hebrew-guide-for-beginner.aspx#comments</comments><description>Shlomo Goldberg released in his blog a great WCF 4.0 tutorial series, if can read Hebrew you might find it very useful:&lt;br /&gt;&lt;br /&gt;Part 1 – &lt;a href="http://blogs.microsoft.co.il/blogs/shlomo/archive/2010/12/28/wcf-wndows-communication-foundation-for-beginner-part-1.aspx" title="Service and Contracts" target="_blank"&gt;Service and Contracts&lt;/a&gt;&lt;br /&gt;Part 2 – &lt;a href="http://blogs.microsoft.co.il/blogs/shlomo/archive/2010/12/29/wcf-windows-communication-foundation-for-beginner-part-2.aspx" title="Hosting Services" target="_blank"&gt;Hosting Services&lt;/a&gt;&lt;br /&gt;Part 3 – &lt;a href="http://blogs.microsoft.co.il/blogs/shlomo/archive/2010/12/30/wcf-windows-communication-foundation-for-beginner-part-3.aspx" target="_blank"&gt;Consuming Services&lt;/a&gt;&lt;br /&gt;Part 4 -&amp;nbsp; &lt;a href="http://blogs.microsoft.co.il/blogs/shlomo/archive/2011/01/03/wcf-4-windows-communication-foundation-for-beginner-part-4.aspx" target="_blank"&gt;Configuration&lt;/a&gt;&lt;br /&gt;Part 5 – &lt;a href="http://blogs.microsoft.co.il/blogs/shlomo/archive/2011/01/06/wcf-4-windows-communication-foundation-for-beginner-part-5.aspx" target="_blank"&gt;Configuration (Part 2)&lt;/a&gt;&lt;br /&gt;Part 6 – &lt;a href="http://blogs.microsoft.co.il/blogs/shlomo/archive/2011/01/09/wcf-4-windows-communication-foundation-for-beginner-part-6.aspx" target="_blank"&gt;Hosting Scenarios&lt;/a&gt;&lt;br /&gt;Part 7 – &lt;a href="http://blogs.microsoft.co.il/blogs/shlomo/archive/2011/01/13/wcf-4-windows-communication-foundation-for-beginner-part-7.aspx" target="_blank"&gt;Consuming service using JavaScript&lt;/a&gt;&lt;br /&gt;Part 8 – &lt;a href="http://blogs.microsoft.co.il/blogs/shlomo/archive/2011/01/18/wcf-4-windows-communication-foundation-for-beginner-part-8.aspx" target="_blank"&gt;Web style services and using GET and POST calls&lt;/a&gt;&lt;br /&gt;Part 9 - &lt;a href="http://blogs.microsoft.co.il/blogs/shlomo/archive/2011/01/23/wcf-4-windows-communication-foundation-for-beginner-part-9.aspx" target="_blank"&gt;Web style services and using GET and POST calls (Part 2)&lt;/a&gt;&lt;br /&gt;Part&amp;nbsp; 10 – &lt;a href="http://blogs.microsoft.co.il/blogs/shlomo/archive/2011/01/31/wcf-4-windows-communication-foundation-for-beginner-part-10.aspx" target="_blank"&gt;RSS feed using WCF&lt;/a&gt;&lt;br /&gt;Part 11 -&amp;nbsp; &lt;a href="http://blogs.microsoft.co.il/blogs/shlomo/archive/2011/02/03/wcf-4-windows-communication-foundation-for-beginner-part-11.aspx" target="_blank"&gt;Messaging Patterns&lt;/a&gt;&lt;br /&gt;Part 12 – &lt;a href="http://blogs.microsoft.co.il/blogs/shlomo/archive/2011/02/06/wcf-4-windows-communication-foundation-for-beginner-part-12.aspx" target="_blank"&gt;Duplex Pattern&lt;/a&gt;&lt;br /&gt;Part 13 – &lt;a href="http://blogs.microsoft.co.il/blogs/shlomo/archive/2011/02/09/wcf-4-windows-communication-foundation-for-beginner-part-13.aspx" target="_blank"&gt;IIS Hosting&lt;/a&gt;&lt;br /&gt;Part 14 – &lt;a href="http://blogs.microsoft.co.il/blogs/shlomo/archive/2011/03/28/wcf-4-windows-communication-foundation-for-beginner-part-14.aspx" target="_blank"&gt;Instance context and concurrency mode&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=819975" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/gadib/archive/tags/C_2300_/default.aspx">C#</category></item><item><title>Enabling anonymous access to SharePoint 2010</title><link>http://blogs.microsoft.co.il/blogs/gadib/archive/2011/04/20/enabling-anonymous-access-to-sharepoint-2010.aspx</link><pubDate>Thu, 21 Apr 2011 01:30:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:819867</guid><dc:creator>gadib</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.microsoft.co.il/blogs/gadib/archive/2011/04/20/enabling-anonymous-access-to-sharepoint-2010.aspx#comments</comments><description>&lt;p&gt;As you may guessed, SharePoint 2010 dose not enable anonymous access out-of-the-box functionality.&lt;/p&gt;  &lt;p&gt;If you&amp;#39;re developing an internet web application , you&amp;#39;ll need to enable this access at some point.&lt;/p&gt;  &lt;p&gt;Follow these step in order to enable the anonymous access.&lt;/p&gt;  &lt;p&gt;1. First go to the central administration&amp;nbsp; -&amp;gt; Application management -&amp;gt; manage web application&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/gadib/clip_image001_11FE607A.gif"&gt;&lt;img src="http://blogs.microsoft.co.il/blogs/gadib/clip_image001_thumb_41D9023B.gif" style="background-image:none;border:0px none;padding-left:0px;padding-right:0px;display:inline;padding-top:0px;" title="clip_image001" alt="clip_image001" width="477" border="0" height="300" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;2. Select your web application that you would like to configure for anonymous access&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/gadib/clip_image002_1881BA3D.gif"&gt;&lt;img src="http://blogs.microsoft.co.il/blogs/gadib/clip_image002_thumb_3613953C.gif" style="background-image:none;border:0px none;padding-left:0px;padding-right:0px;display:inline;padding-top:0px;" title="clip_image002" alt="clip_image002" width="487" border="0" height="135" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;3. Select the default provider under Authentication providers.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/gadib/clip_image003_28CD0C29.gif"&gt;&lt;img src="http://blogs.microsoft.co.il/blogs/gadib/clip_image003_thumb_5913E0DF.gif" style="background-image:none;border:0px none;padding-left:0px;padding-right:0px;display:inline;padding-top:0px;" title="clip_image003" alt="clip_image003" width="497" border="0" height="146" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;4. Check the &amp;quot;Enable anonymous access&amp;quot; checkbox&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/gadib/clip_image004_3028CBD6.gif"&gt;&lt;img src="http://blogs.microsoft.co.il/blogs/gadib/clip_image004_thumb_26EC9095.gif" style="background-image:none;border:0px none;padding-left:0px;padding-right:0px;display:inline;padding-top:0px;" title="clip_image004" alt="clip_image004" width="505" border="0" height="536" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;5. Select &amp;quot;Anonymous Policy&amp;quot; from the ribbon and set the permissions to &amp;quot;No Policy&amp;quot;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/gadib/clip_image005_791EC7CF.gif"&gt;&lt;img src="http://blogs.microsoft.co.il/blogs/gadib/clip_image005_thumb_62104693.gif" style="background-image:none;border:0px none;padding-left:0px;padding-right:0px;display:inline;padding-top:0px;" title="clip_image005" alt="clip_image005" width="510" border="0" height="367" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;6. Navigate to your site -&amp;gt; site settings - &amp;gt; site permissions.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/gadib/clip_image006_1FBD2E50.gif"&gt;&lt;img src="http://blogs.microsoft.co.il/blogs/gadib/clip_image006_thumb_32257F05.gif" style="background-image:none;border:0px none;padding-left:0px;padding-right:0px;display:inline;padding-top:0px;" title="clip_image006" alt="clip_image006" width="514" border="0" height="410" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;7. Select &amp;quot;Anonymous access&amp;quot; from the ribbon and set the access to &amp;quot;Entire Web Site&amp;quot;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/gadib/clip_image007_3D6E9342.gif"&gt;&lt;img src="http://blogs.microsoft.co.il/blogs/gadib/clip_image007_thumb_544D64BE.gif" style="background-image:none;border:0px none;padding-left:0px;padding-right:0px;display:inline;padding-top:0px;" title="clip_image007" alt="clip_image007" width="517" border="0" height="372" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;That&amp;#39;s it , you&amp;#39;re set. Enjoy.&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=819867" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/gadib/archive/tags/SharePoint/default.aspx">SharePoint</category></item><item><title>TFS 2010 doesn’t like cache files</title><link>http://blogs.microsoft.co.il/blogs/gadib/archive/2011/03/02/tfs-2010-doesn-t-like-cache-files.aspx</link><pubDate>Thu, 03 Mar 2011 02:52:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:800632</guid><dc:creator>gadib</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.microsoft.co.il/blogs/gadib/archive/2011/03/02/tfs-2010-doesn-t-like-cache-files.aspx#comments</comments><description>&lt;p&gt;I&amp;#39;ve copied entire solutions from TFS to TFS an I&amp;#39;ve noticed a strange issue.&lt;/p&gt;  &lt;p&gt;The solution won&amp;#39;t compile, the errors came from our Cache handling infrastructure based on Enterprise library 5.0.&lt;/p&gt;  &lt;p&gt;After taking a closer look, I&amp;#39;ve noticed that some of the files (CS files) does not exists!&lt;/p&gt;  &lt;p&gt;It&amp;#39;s seems that TFS automatically exclude files that contain the phrase : &amp;quot;Cache&amp;quot; as you can see in the following screen shot:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/gadib/clip_image001_6A45FA29.jpg"&gt;&lt;img src="http://blogs.microsoft.co.il/blogs/gadib/clip_image001_thumb_658FA3D5.jpg" style="background-image:none;border:0px none;padding-left:0px;padding-right:0px;display:inline;padding-top:0px;" title="clip_image001" alt="clip_image001" width="597" border="0" height="343" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;So make sure you include your &amp;quot;Cache Files&amp;quot; when adding entire projects or solutions.&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=800632" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/gadib/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blogs.microsoft.co.il/blogs/gadib/archive/tags/Architecture/default.aspx">Architecture</category></item><item><title>Commerce Server 2009 Resources</title><link>http://blogs.microsoft.co.il/blogs/gadib/archive/2011/01/17/commerce-server-2009-resources.aspx</link><pubDate>Tue, 18 Jan 2011 03:54:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:773388</guid><dc:creator>gadib</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.microsoft.co.il/blogs/gadib/archive/2011/01/17/commerce-server-2009-resources.aspx#comments</comments><description>&lt;p&gt;Microsoft Commerce Server developers&amp;quot; , now that&amp;#39;s a rather small group J&lt;/p&gt;  &lt;p&gt;This first thing you notice as a developer or administrator is that good commerce server resources are hard to find.&lt;/p&gt;  &lt;p&gt;I&amp;#39;ve compiled a list of good resources for you to use.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/b/commerce/"&gt;The official e-commerce blog&lt;/a&gt; – the official Microsoft&amp;#39;s Commerce 2009 blog&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/dd452365%28v=CS.90%29.aspx"&gt;MSDN&lt;/a&gt; – if you&amp;#39;re developing commerce applications , you should probably have this one in your favorites&lt;/p&gt;  &lt;p&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en/commserver2009/threads"&gt;Forum&lt;/a&gt; – if you&amp;#39;ll have any questions regarding commerce server (and you will), this is the place for good and rather quick answers&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/b/maxakbar/archive/2006/08/17/705473.aspx"&gt;Pipelines&lt;/a&gt; – everything you need to know about pipelines. Check out part &lt;a href="http://blogs.msdn.com/b/maxakbar/archive/2006/09/02/736999.aspx"&gt;2&lt;/a&gt;, &lt;a href="http://blogs.msdn.com/b/maxakbar/archive/2006/09/17/759555.aspx"&gt;3&lt;/a&gt; and &lt;a href="http://blogs.msdn.com/b/maxakbar/archive/2006/09/20/764024.aspx"&gt;4&lt;/a&gt; as well.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/b/khavas/archive/2010/07/10/commerce-server-2009-operation-sequence-component-extensibility.aspx"&gt;Operation sequence components&lt;/a&gt; – a four part guide for extending Commerce Server using these components. Don&amp;#39;t forget &lt;a href="http://blogs.msdn.com/b/khavas/archive/2010/07/12/commerce-server-2009-operationsequencecomponent-extensibility-part-2.aspx"&gt;part 2&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc515165%28CS.70%29.aspx"&gt;Commerce Command line tools&lt;/a&gt; – some useful tools that were originally in the 2007 version.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms945740"&gt;Pipeline Component Reference&lt;/a&gt; – MSDN&amp;#39;s reference for creating a pipeline component.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://commerceserverguy.wordpress.com/2010/03/03/developing-with-commerce-server-2009-learn-multi-channel-commerce-foundation/"&gt;MCCF&lt;/a&gt; – a great walkthrough the multi-channel commerce foundation. Check out &lt;a href="http://commerceserverguy.wordpress.com/2010/03/04/commerce-server-2009-operation-sequences-translators/"&gt;part 2&lt;/a&gt;, &lt;a href="http://commerceserverguy.wordpress.com/2010/05/13/commerce-foundation-metadata-channel-configuration/"&gt;part 3&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Feel free to expand the list.&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=773388" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/gadib/archive/tags/Commerce+Server/default.aspx">Commerce Server</category></item><item><title>Commerce Server 2009 Overview</title><link>http://blogs.microsoft.co.il/blogs/gadib/archive/2011/01/09/commerce-server-2009-overview.aspx</link><pubDate>Mon, 10 Jan 2011 02:16:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:767333</guid><dc:creator>gadib</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.microsoft.co.il/blogs/gadib/archive/2011/01/09/commerce-server-2009-overview.aspx#comments</comments><description>&lt;p&gt;Never heard about Microsoft&amp;#39;s Commerce Server and want a quick overview? This post is for you.&lt;/p&gt;  &lt;p&gt;Commerce Server (previously known as Merchant Server and Site Server) is Microsoft&amp;#39;s product for building e-commerce systems. The latest version is Commerce Server 2009.&lt;/p&gt;  &lt;p&gt;Microsoft Commerce Server 2009 provides a comprehensive solution for many business scenarios, including:&lt;/p&gt;  &lt;p&gt;· Business-to-consumer (B2C) sales of tangible or digital goods or online service delivery.&lt;/p&gt;  &lt;p&gt;· Business-to-business (B2B) scenarios, such as &lt;a href="http://en.wikipedia.org/wiki/E-procurement"&gt;e-procurement&lt;/a&gt; and trading communities.&lt;/p&gt;  &lt;p&gt;· B2X scenarios, combining Business to Consumer (B2C) and Business to Business (B2B).&lt;/p&gt;  &lt;p&gt;· Self service portals using catalogs, profiles, or content targeting for personalized information delivery.&lt;/p&gt;  &lt;p&gt;So what does it all mean?&lt;/p&gt;  &lt;p&gt;The following diagram explains the Microsoft&amp;#39;s Commerce Server 2009 world:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/gadib/clip_image001_65839E45.jpg"&gt;&lt;img src="http://blogs.microsoft.co.il/blogs/gadib/clip_image001_thumb_65DFAB6D.jpg" style="background-image:none;border:0px none;padding-left:0px;padding-right:0px;display:inline;padding-top:0px;" title="clip_image001" alt="clip_image001" width="491" border="0" height="323" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;There are four core components in Commerce Server :&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;Orders &amp;amp; Inventory&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;The Orders &amp;amp; Inventory system is responsible for tracking orders made by customers. The server can link with external systems that track inventory for a business so that inventory information is kept up-to-date and communicate with the appropriate parties when inventory runs low to indicate that it&amp;#39;s time for new stock to be ordered. Business users are able to determine what &amp;quot;low&amp;quot; is through a management tool which lets them set inventory thresholds and get reports on product sales according to whatever metrics are desired, using Microsoft SQL Server Analytics.&lt;b&gt;&lt;u&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;Catalog&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;A company&amp;#39;s products are intended to be described in the Catalog system. The products, the categories they belong to ,and relationships with other products are tracked by Commerce Server . A configurable metadata system enable the server to address any kind of merchant scenario.&lt;b&gt;&lt;u&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;Marketing&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Managing promotions on a website can become a task unto itself, but the server addresses this web-trend by distilling the index operations associated with online advertising into a finite collection of functions. These let the business user manage ads and set rules that determine the conditions under which specific ads appear.&lt;b&gt;&lt;u&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;Profiles&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Almost every commercial website today makes an effort to personalize the content for an individual shopper. Its Profile system can do everything from tracking a shopper&amp;#39;s product preferences, to tailoring the website presentation for the individual user.&lt;/p&gt;  &lt;p&gt;A Commerce Server&amp;#39;s logical architecture would look something like that :&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/gadib/clip_image003_39EF0BE4.jpg"&gt;&lt;img src="http://blogs.microsoft.co.il/blogs/gadib/clip_image003_thumb_4091EF9A.jpg" style="background-image:none;border:0px none;padding-left:0px;padding-right:0px;display:inline;padding-top:0px;" title="clip_image003" alt="clip_image003" width="490" border="0" height="342" /&gt;&lt;/a&gt;&lt;u&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;Multi-Channel Commerce Foundation&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;The MCF is the programming model for developing Commerce Server applications. It&amp;#39;s a new feature in Commerce 2009 that simplifies all development to the core components.&lt;/p&gt;  &lt;p&gt;MCF introduces a new object model that encapsulate all the commerce entities, so basically developing with catalog, profile or orders shouldn&amp;#39;t make a difference to the developer.&lt;/p&gt;  &lt;p&gt;For example a query for retrieving any commerce entity should look something like this :&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;var &lt;/span&gt;query = &lt;span style="color:blue;"&gt;new &lt;/span&gt;CommerceQuery&amp;lt;CommerceEntity&amp;gt;(&lt;span&gt;&amp;quot;UserProfile&amp;quot;&lt;/span&gt;);&lt;br /&gt;query.SearchCriteria.Model.Properties[&lt;span&gt;&amp;quot;Email&amp;quot;&lt;/span&gt;] = &lt;span&gt;&amp;quot;useremail@yourcompany.com&amp;quot;&lt;/span&gt;;&lt;br /&gt;CommerceResponse response = OperationService.ProcessRequest(&lt;span style="color:blue;"&gt;base&lt;/span&gt;.GetCurrentRequestContext(), query.ToRequest());&lt;/pre&gt;


&lt;p&gt;&amp;lt;CommerceEntity&amp;gt; can be a product , customer&amp;#39;s profile, customer&amp;#39;s basket or an order form.&lt;/p&gt;

&lt;p&gt;All commerce entities implement the commerce entity interface, here&amp;#39;s the main object model:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/gadib/clip_image004_53A2F679.gif"&gt;&lt;img src="http://blogs.microsoft.co.il/blogs/gadib/clip_image004_thumb_4E806D30.gif" style="background-image:none;border:0px none;padding-left:0px;padding-right:0px;display:inline;padding-top:0px;" title="clip_image004" alt="clip_image004" width="368" border="0" height="428" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;u&gt;Pipelines and Operation sequences components&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Pipelines and operation sequences components describe each of the entities&amp;#39; workflows and can be extended easily via&lt;/p&gt;

&lt;p&gt;The pipeline editor and &lt;i&gt;OperationSequenceComponent&lt;/i&gt; class. You can read more on pipelines &lt;a href="http://blogs.msdn.com/b/maxakbar/archive/2006/08/17/705473.aspx"&gt;here&lt;/a&gt; and on operation sequence components &lt;a href="http://blogs.msdn.com/b/khavas/archive/2010/07/10/commerce-server-2009-operation-sequence-component-extensibility.aspx"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;u&gt;Business User Applications&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Commerce server comes with out-of-the-box desktop application that can be extended if needed.&lt;/p&gt;

&lt;p&gt;Those applications are for content managers and system administrators. Those application includes the catalog manager, Catalog and inventory schema manager,&lt;/p&gt;

&lt;p&gt;Marketing manager and the customer and orders manger.&lt;/p&gt;

&lt;p&gt;Everything about Commerce server content can be managed for these applications. Here&amp;#39;s a screen shot of the catalog manager:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/gadib/clip_image006_4306E78C.jpg"&gt;&lt;img src="http://blogs.microsoft.co.il/blogs/gadib/clip_image006_thumb_0737290C.jpg" style="background-image:none;border:0px none;padding-left:0px;padding-right:0px;display:inline;padding-top:0px;" title="clip_image006" alt="clip_image006" width="444" border="0" height="206" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;u&gt;Commerce Server and SharePoint 2010&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Now that&amp;#39;s Microsoft product integration at its best. Commerce server 2009 includes the &amp;quot;SharePoint Commerce Services&amp;quot; for MOSS and SharePoint 2010.&lt;/p&gt;

&lt;p&gt;This include a full out-of-the-box SharePoint site template and 30 different web parts, so you can build a rich content e-commerce application.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/gadib/clip_image007_295F0EC5.png"&gt;&lt;img src="http://blogs.microsoft.co.il/blogs/gadib/clip_image007_thumb_4089C79C.png" style="background-image:none;border:0px none;padding-left:0px;padding-right:0px;display:inline;padding-top:0px;" title="clip_image007" alt="clip_image007" width="458" border="0" height="327" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;u&gt;Conclusion&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;if you&amp;#39;re a medium-large organization thinking about creating a e-commerce application, you should consider Commerce Server 2009. The MCF is a great framework for developers, the user business application gives the content manager full control on everything from managing the catalog to setting marketing campaigns and promotions and you can all that SharePoint has to offer.&lt;/p&gt;

&lt;a href="http://dotnetshoutout.com/Submit?url=http://blogs.microsoft.co.il/blogs/gadib/archive/2011/01/09/commerce-server-2009-overview.aspx"&gt;
        &lt;img src="http://dotnetshoutout.com/image.axd?url=http://blogs.microsoft.co.il/blogs/gadib/archive/2011/01/09/commerce-server-2009-overview.aspx" style="border:0px none;" alt="Shout it" /&gt;
    &lt;/a&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=767333" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/gadib/archive/tags/Commerce+Server/default.aspx">Commerce Server</category></item><item><title>WCF 4.0 routing</title><link>http://blogs.microsoft.co.il/blogs/gadib/archive/2010/12/06/wcf-4-0-routing.aspx</link><pubDate>Mon, 06 Dec 2010 16:34:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:752976</guid><dc:creator>gadib</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.microsoft.co.il/blogs/gadib/archive/2010/12/06/wcf-4-0-routing.aspx#comments</comments><description>&lt;p&gt;In previous post, I&amp;#39;ve created the top layer of my application architecture using &lt;a href="http://blogs.microsoft.co.il/blogs/gadib/archive/2010/11/30/wcf-and-unity-2-0.aspx"&gt;Unity 2.0 and WCF&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;In this post I would like to add the final building block of the application server : &amp;quot;The WCF Router service&amp;quot;.&lt;/p&gt;  &lt;p&gt;WCF routing is a very cool feature in WCF 4.0 that can provides a method for isolating or encapsulating your services from your client,Exposing it only to a router service that will be responsible for routing the messages to the right service.&lt;/p&gt;  &lt;p&gt;Here&amp;#39;s how it works:&lt;/p&gt;  &lt;p&gt;First we&amp;#39;ve got our services web application (I&amp;#39;ve mapped it to port 9000 on my local machine).&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;system.serviceModel&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;    &amp;lt;&lt;/span&gt;&lt;span&gt;serviceHostingEnvironment &lt;/span&gt;&lt;span style="color:red;"&gt;aspNetCompatibilityEnabled&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;true&lt;/span&gt;&amp;quot; &lt;span style="color:blue;"&gt;/&amp;gt;&lt;br /&gt;    &amp;lt;&lt;/span&gt;&lt;span&gt;behaviors&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;      &amp;lt;&lt;/span&gt;&lt;span&gt;serviceBehaviors&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;        &amp;lt;&lt;/span&gt;&lt;span&gt;behavior &lt;/span&gt;&lt;span style="color:red;"&gt;name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;Service1Behavior&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;          &amp;lt;&lt;/span&gt;&lt;span&gt;serviceMetadata &lt;/span&gt;&lt;span style="color:red;"&gt;httpGetEnabled&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;true&lt;/span&gt;&amp;quot; &lt;span style="color:blue;"&gt;/&amp;gt;&lt;br /&gt;          &amp;lt;&lt;/span&gt;&lt;span&gt;serviceDebug &lt;/span&gt;&lt;span style="color:red;"&gt;includeExceptionDetailInFaults&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;true&lt;/span&gt;&amp;quot; &lt;span style="color:blue;"&gt;/&amp;gt;&lt;br /&gt;        &amp;lt;/&lt;/span&gt;&lt;span&gt;behavior&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;        &amp;lt;&lt;/span&gt;&lt;span&gt;behavior &lt;/span&gt;&lt;span style="color:red;"&gt;name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;Service2Behavior&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;          &amp;lt;&lt;/span&gt;&lt;span&gt;serviceMetadata &lt;/span&gt;&lt;span style="color:red;"&gt;httpGetEnabled&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;true&lt;/span&gt;&amp;quot; &lt;span style="color:blue;"&gt;/&amp;gt;&lt;br /&gt;          &amp;lt;&lt;/span&gt;&lt;span&gt;serviceDebug &lt;/span&gt;&lt;span style="color:red;"&gt;includeExceptionDetailInFaults&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;true&lt;/span&gt;&amp;quot; &lt;span style="color:blue;"&gt;/&amp;gt;&lt;br /&gt;        &amp;lt;/&lt;/span&gt;&lt;span&gt;behavior&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;      &amp;lt;/&lt;/span&gt;&lt;span&gt;serviceBehaviors&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;    &amp;lt;/&lt;/span&gt;&lt;span&gt;behaviors&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;    &amp;lt;&lt;/span&gt;&lt;span&gt;services&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;      &amp;lt;&lt;/span&gt;&lt;span&gt;service &lt;/span&gt;&lt;span style="color:red;"&gt;name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;Server.WCFServices.Service1&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;        &amp;lt;&lt;/span&gt;&lt;span&gt;host&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;          &amp;lt;&lt;/span&gt;&lt;span&gt;baseAddresses&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;            &amp;lt;&lt;/span&gt;&lt;span&gt;add &lt;/span&gt;&lt;span style="color:red;"&gt;baseAddress&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;http://localhost:9000/service1&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;/&amp;gt;&lt;br /&gt;          &amp;lt;/&lt;/span&gt;&lt;span&gt;baseAddresses&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;        &amp;lt;/&lt;/span&gt;&lt;span&gt;host&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;        &amp;lt;&lt;/span&gt;&lt;span&gt;endpoint &lt;/span&gt;&lt;span style="color:red;"&gt;address&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&amp;quot; &lt;span style="color:red;"&gt;binding&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;basicHttpBinding&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;contract&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;Common.Contracts.IService1&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;/&amp;gt;&lt;br /&gt;        &amp;lt;&lt;/span&gt;&lt;span&gt;endpoint &lt;/span&gt;&lt;span style="color:red;"&gt;address&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;mex&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;binding&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;mexHttpBinding&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;contract&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;IMetadataExchange&lt;/span&gt;&amp;quot; &lt;span style="color:blue;"&gt;/&amp;gt;&lt;br /&gt;      &amp;lt;/&lt;/span&gt;&lt;span&gt;service&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;      &amp;lt;&lt;/span&gt;&lt;span&gt;service &lt;/span&gt;&lt;span style="color:red;"&gt;name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;Server.WCFServices.Servicew&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;      &amp;lt;&lt;/span&gt;&lt;span&gt;host&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;        &amp;lt;&lt;/span&gt;&lt;span&gt;baseAddresses&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;          &amp;lt;&lt;/span&gt;&lt;span&gt;add &lt;/span&gt;&lt;span style="color:red;"&gt;baseAddress&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;http://localhost:9000/service2&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;/&amp;gt;&lt;br /&gt;        &amp;lt;/&lt;/span&gt;&lt;span&gt;baseAddresses&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;      &amp;lt;/&lt;/span&gt;&lt;span&gt;host&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;      &amp;lt;&lt;/span&gt;&lt;span&gt;endpoint &lt;/span&gt;&lt;span style="color:red;"&gt;address&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&amp;quot; &lt;span style="color:red;"&gt;binding&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;basicHttpBinding&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;contract&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;Common.Contracts.IService2&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;/&amp;gt;&lt;br /&gt;      &amp;lt;&lt;/span&gt;&lt;span&gt;endpoint &lt;/span&gt;&lt;span style="color:red;"&gt;address&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;mex&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;binding&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;mexHttpBinding&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;contract&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;IMetadataExchange&lt;/span&gt;&amp;quot; &lt;span style="color:blue;"&gt;/&amp;gt;&lt;br /&gt;      &amp;lt;/&lt;/span&gt;&lt;span&gt;service&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;  &lt;br /&gt;    &amp;lt;/&lt;/span&gt;&lt;span&gt;services&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;  &amp;lt;/&lt;/span&gt;&lt;span&gt;system.serviceModel&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;


&lt;p&gt;You can notice I&amp;#39;ve got 2 services : service1 and service2.&lt;/p&gt;

&lt;p&gt;Now you should create a new web application that will host the router service (I&amp;#39;ve mapped it to port 8689 on my local machine)&lt;/p&gt;

&lt;p&gt;This web application project holds the router.svc file and a web configuration file.&lt;/p&gt;

&lt;p&gt;You should follow these steps to set up your service in the router configuration:&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;u&gt;Step 1 – Create an end point&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Just as you would create an end point in your original service, an end point should be declared here.&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;endpoint &lt;/span&gt;&lt;span style="color:red;"&gt;address&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;service1&lt;/span&gt;&amp;quot;&lt;br /&gt;                  &lt;span style="color:red;"&gt;binding&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;basicHttpBinding&lt;/span&gt;&amp;quot;&lt;br /&gt;                  &lt;span style="color:red;"&gt;name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;service1EndPoint&lt;/span&gt;&amp;quot;&lt;br /&gt;                  &lt;span style="color:red;"&gt;contract&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;System.ServiceModel.Routing.IRequestReplyRouter&lt;/span&gt;&amp;quot; &lt;span style="color:blue;"&gt;/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;endpoint &lt;/span&gt;&lt;span style="color:red;"&gt;address&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;service2&lt;/span&gt;&amp;quot;&lt;br /&gt;                  &lt;span style="color:red;"&gt;binding&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;basicHttpBinding&lt;/span&gt;&amp;quot;&lt;br /&gt;                  &lt;span style="color:red;"&gt;name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;service2EndPoint&lt;/span&gt;&amp;quot;&lt;br /&gt;                  &lt;span style="color:red;"&gt;contract&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;System.ServiceModel.Routing.IRequestReplyRouter&lt;/span&gt;&amp;quot; &lt;span style="color:blue;"&gt;/&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;


&lt;p&gt;&lt;b&gt;&lt;u&gt;Step 2 – Create an client end point&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;you should create a client end point in the same way, you would do this on a client application:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;client&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;      &lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;endpoint &lt;/span&gt;&lt;span style="color:red;"&gt;name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;service1ClientEndPoint&lt;/span&gt;&amp;quot;&lt;br /&gt;                &lt;span style="color:red;"&gt;address&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;http://localhost:9000/service1.svc&lt;/span&gt;&amp;quot;&lt;br /&gt;                &lt;span style="color:red;"&gt;binding&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;basicHttpBinding&lt;/span&gt;&amp;quot;&lt;br /&gt;                &lt;span style="color:red;"&gt;contract&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;*&lt;/span&gt;&amp;quot; &lt;span style="color:blue;"&gt;/&amp;gt;&lt;br /&gt;&lt;br /&gt;      &lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;endpoint &lt;/span&gt;&lt;span style="color:red;"&gt;name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;service2ClientEndPoint&lt;/span&gt;&amp;quot;&lt;br /&gt;                &lt;span style="color:red;"&gt;address&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;http://localhost:9000/service2.svc&lt;/span&gt;&amp;quot;&lt;br /&gt;                &lt;span style="color:red;"&gt;binding&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;basicHttpBinding&lt;/span&gt;&amp;quot;&lt;br /&gt;                &lt;span style="color:red;"&gt;contract&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;*&lt;/span&gt;&amp;quot; &lt;span style="color:blue;"&gt;/&amp;gt;&lt;br /&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;client&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;


&lt;p&gt;&lt;b&gt;&lt;u&gt;Step 3 – Add a filter&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Filters is where the magic happens. Its where the router service knows how to handle an end point and how to filter it.&lt;/p&gt;

&lt;p&gt;There are several filter types you could use, you can read more regarding routing filter &lt;a href="http://msdn.microsoft.com/en-us/library/ms731081.aspx"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;For this example, I&amp;#39;ve chosen to use an end point name filter.&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;filters&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;        &amp;lt;&lt;/span&gt;&lt;span&gt;filter &lt;/span&gt;&lt;span style="color:red;"&gt;name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;Service1Filter&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;filterType&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;EndpointName&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;filterData&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;service1EndPoint&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;/&amp;gt;&lt;br /&gt;        &amp;lt;&lt;/span&gt;&lt;span&gt;filter &lt;/span&gt;&lt;span style="color:red;"&gt;name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;Service2Filter&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;filterType&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;EndpointName&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;filterData&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;service2EndPoint&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;/&amp;gt;&lt;br /&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;filters&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;


&lt;p&gt;&lt;b&gt;&lt;u&gt;Step 4 – Add the filter to a filter table&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Filters in the filters table map filters to the client end point and therefore creates the final connection to the service itself.&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;filterTables&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;        &amp;lt;&lt;/span&gt;&lt;span&gt;filterTable &lt;/span&gt;&lt;span style="color:red;"&gt;name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;filterTable1&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;          &amp;lt;!--&lt;/span&gt;&lt;span style="color:green;"&gt;add the filters to the message filter table&lt;/span&gt;&lt;span style="color:blue;"&gt;--&amp;gt;&lt;br /&gt;          &amp;lt;!--&lt;/span&gt;&lt;span style="color:green;"&gt;we determine this through the endpoint name, or through the address prefix&lt;/span&gt;&lt;span style="color:blue;"&gt;--&amp;gt;&lt;br /&gt;          &amp;lt;&lt;/span&gt;&lt;span&gt;add &lt;/span&gt;&lt;span style="color:red;"&gt;filterName&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;Service1Filter&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;endpointName&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;service1ClientEndPoint&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;priority&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;1&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;/&amp;gt;&lt;br /&gt;          &amp;lt;&lt;/span&gt;&lt;span&gt;add &lt;/span&gt;&lt;span style="color:red;"&gt;filterName&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;Service2Filter&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;endpointName&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;service2ClientEndPoint&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;priority&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;1&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;/&amp;gt;&lt;br /&gt;          &amp;lt;!--&lt;/span&gt;&lt;span style="color:green;"&gt;if none of the other filters have matched, this message showed up on the default router endpoint, with no custom header&lt;/span&gt;&lt;span style="color:blue;"&gt;--&amp;gt;&lt;br /&gt;        &amp;lt;/&lt;/span&gt;&lt;span&gt;filterTable&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;filterTables&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;You can sum up the routing process like this :&lt;/p&gt;

&lt;p&gt;End point -&amp;gt; filter -&amp;gt; filter table -&amp;gt; Client end point&lt;/p&gt;

&lt;p&gt;Here&amp;#39;s the entire web configuration file :&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;system.serviceModel&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;    &amp;lt;&lt;/span&gt;&lt;span&gt;services&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;      &amp;lt;&lt;/span&gt;&lt;span&gt;service &lt;/span&gt;&lt;span style="color:red;"&gt;behaviorConfiguration&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;routingConfiguration&lt;/span&gt;&amp;quot;&lt;br /&gt;               &lt;span style="color:red;"&gt;name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;System.ServiceModel.Routing.RoutingService&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;        &amp;lt;&lt;/span&gt;&lt;span&gt;host&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;          &amp;lt;&lt;/span&gt;&lt;span&gt;baseAddresses&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;            &amp;lt;&lt;/span&gt;&lt;span&gt;add &lt;/span&gt;&lt;span style="color:red;"&gt;baseAddress&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;http://localhost:8689/router.svc&lt;/span&gt;&amp;quot; &lt;span style="color:blue;"&gt;/&amp;gt;&lt;br /&gt;          &amp;lt;/&lt;/span&gt;&lt;span&gt;baseAddresses&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;        &amp;lt;/&lt;/span&gt;&lt;span&gt;host&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;        &amp;lt;!--&lt;/span&gt;&lt;span style="color:green;"&gt;Set up the inbound endpoints for the Routing Service&lt;/span&gt;&lt;span style="color:blue;"&gt;--&amp;gt;&lt;br /&gt;        &amp;lt;!--&lt;/span&gt;&lt;span style="color:green;"&gt;first create the general router endpoint&lt;/span&gt;&lt;span style="color:blue;"&gt;--&amp;gt;&lt;br /&gt;        &amp;lt;&lt;/span&gt;&lt;span&gt;endpoint &lt;/span&gt;&lt;span style="color:red;"&gt;address&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;general&lt;/span&gt;&amp;quot;&lt;br /&gt;                  &lt;span style="color:red;"&gt;binding&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;basicHttpBinding&lt;/span&gt;&amp;quot;&lt;br /&gt;                  &lt;span style="color:red;"&gt;name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;routerEndpoint&lt;/span&gt;&amp;quot;&lt;br /&gt;                  &lt;span style="color:red;"&gt;contract&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;System.ServiceModel.Routing.IRequestReplyRouter&lt;/span&gt;&amp;quot; &lt;span style="color:blue;"&gt;/&amp;gt;&lt;br /&gt;        &amp;lt;!--&lt;/span&gt;&lt;span style="color:green;"&gt;create a virtual endpoint for the the regular calculator service&lt;/span&gt;&lt;span style="color:blue;"&gt;--&amp;gt;&lt;br /&gt;        &amp;lt;&lt;/span&gt;&lt;span&gt;endpoint &lt;/span&gt;&lt;span style="color:red;"&gt;address&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;service1&lt;/span&gt;&amp;quot;&lt;br /&gt;                  &lt;span style="color:red;"&gt;binding&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;basicHttpBinding&lt;/span&gt;&amp;quot;&lt;br /&gt;                  &lt;span style="color:red;"&gt;name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;service1EndPoint&lt;/span&gt;&amp;quot;&lt;br /&gt;                  &lt;span style="color:red;"&gt;contract&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;System.ServiceModel.Routing.IRequestReplyRouter&lt;/span&gt;&amp;quot; &lt;span style="color:blue;"&gt;/&amp;gt;&lt;br /&gt;&lt;br /&gt;        &amp;lt;&lt;/span&gt;&lt;span&gt;endpoint &lt;/span&gt;&lt;span style="color:red;"&gt;address&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;service2&lt;/span&gt;&amp;quot;&lt;br /&gt;                  &lt;span style="color:red;"&gt;binding&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;basicHttpBinding&lt;/span&gt;&amp;quot;&lt;br /&gt;                  &lt;span style="color:red;"&gt;name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;service2EndPoint&lt;/span&gt;&amp;quot;&lt;br /&gt;                  &lt;span style="color:red;"&gt;contract&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;System.ServiceModel.Routing.IRequestReplyRouter&lt;/span&gt;&amp;quot; &lt;span style="color:blue;"&gt;/&amp;gt; &lt;br /&gt;       &lt;br /&gt;      &amp;lt;/&lt;/span&gt;&lt;span&gt;service&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;    &amp;lt;/&lt;/span&gt;&lt;span&gt;services&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;    &amp;lt;&lt;/span&gt;&lt;span&gt;behaviors&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;      &amp;lt;!--&lt;/span&gt;&lt;span style="color:green;"&gt;default routing service behavior definition&lt;/span&gt;&lt;span style="color:blue;"&gt;--&amp;gt;&lt;br /&gt;      &amp;lt;&lt;/span&gt;&lt;span&gt;serviceBehaviors&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;        &amp;lt;&lt;/span&gt;&lt;span&gt;behavior &lt;/span&gt;&lt;span style="color:red;"&gt;name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;routingConfiguration&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;          &amp;lt;&lt;/span&gt;&lt;span&gt;routing &lt;/span&gt;&lt;span style="color:red;"&gt;filterTableName&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;filterTable1&lt;/span&gt;&amp;quot; &lt;span style="color:blue;"&gt;/&amp;gt;&lt;br /&gt;          &amp;lt;&lt;/span&gt;&lt;span&gt;serviceMetadata &lt;/span&gt;&lt;span style="color:red;"&gt;httpGetEnabled&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;true&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;/&amp;gt;&lt;br /&gt;          &amp;lt;&lt;/span&gt;&lt;span&gt;serviceDebug &lt;/span&gt;&lt;span style="color:red;"&gt;includeExceptionDetailInFaults&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;true&lt;/span&gt;&amp;quot; &lt;span style="color:blue;"&gt;/&amp;gt;&lt;br /&gt;        &amp;lt;/&lt;/span&gt;&lt;span&gt;behavior&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;      &amp;lt;/&lt;/span&gt;&lt;span&gt;serviceBehaviors&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;    &amp;lt;/&lt;/span&gt;&lt;span&gt;behaviors&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;&lt;/span&gt;&lt;span&gt;client&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;      &amp;lt;!--&lt;/span&gt;&lt;span style="color:green;"&gt;set up the destination endpoints&lt;/span&gt;&lt;span style="color:blue;"&gt;--&amp;gt;&lt;br /&gt;      &amp;lt;&lt;/span&gt;&lt;span&gt;endpoint &lt;/span&gt;&lt;span style="color:red;"&gt;name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;service1ClientEndPoint&lt;/span&gt;&amp;quot;&lt;br /&gt;                &lt;span style="color:red;"&gt;address&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;http://localhost:9000/service1.svc&lt;/span&gt;&amp;quot;&lt;br /&gt;                &lt;span style="color:red;"&gt;binding&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;basicHttpBinding&lt;/span&gt;&amp;quot;&lt;br /&gt;                &lt;span style="color:red;"&gt;contract&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;*&lt;/span&gt;&amp;quot; &lt;span style="color:blue;"&gt;/&amp;gt;&lt;br /&gt;&lt;br /&gt;      &amp;lt;!--&lt;/span&gt;&lt;span style="color:green;"&gt;set up the destination endpoints&lt;/span&gt;&lt;span style="color:blue;"&gt;--&amp;gt;&lt;br /&gt;      &amp;lt;&lt;/span&gt;&lt;span&gt;endpoint &lt;/span&gt;&lt;span style="color:red;"&gt;name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;service2ClientEndPoint&lt;/span&gt;&amp;quot;&lt;br /&gt;                &lt;span style="color:red;"&gt;address&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;http://localhost:9000/service2.svc&lt;/span&gt;&amp;quot;&lt;br /&gt;                &lt;span style="color:red;"&gt;binding&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;basicHttpBinding&lt;/span&gt;&amp;quot;&lt;br /&gt;                &lt;span style="color:red;"&gt;contract&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;*&lt;/span&gt;&amp;quot; &lt;span style="color:blue;"&gt;/&amp;gt;&lt;br /&gt;    &amp;lt;/&lt;/span&gt;&lt;span&gt;client&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;    &amp;lt;&lt;/span&gt;&lt;span&gt;routing&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;      &amp;lt;&lt;/span&gt;&lt;span&gt;filters&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;        &amp;lt;&lt;/span&gt;&lt;span&gt;filter &lt;/span&gt;&lt;span style="color:red;"&gt;name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;Service1Filter&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;filterType&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;EndpointName&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;filterData&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;service1EndPoint&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;/&amp;gt;&lt;br /&gt;        &amp;lt;&lt;/span&gt;&lt;span&gt;filter &lt;/span&gt;&lt;span style="color:red;"&gt;name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;Service2Filter&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;filterType&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;EndpointName&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;filterData&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;service2EndPoint&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;/&amp;gt;&lt;br /&gt;      &amp;lt;/&lt;/span&gt;&lt;span&gt;filters&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;      &amp;lt;&lt;/span&gt;&lt;span&gt;filterTables&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;        &amp;lt;&lt;/span&gt;&lt;span&gt;filterTable &lt;/span&gt;&lt;span style="color:red;"&gt;name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;filterTable1&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;          &amp;lt;!--&lt;/span&gt;&lt;span style="color:green;"&gt;add the filters to the message filter table&lt;/span&gt;&lt;span style="color:blue;"&gt;--&amp;gt;&lt;br /&gt;          &amp;lt;!--&lt;/span&gt;&lt;span style="color:green;"&gt;we determine this through the endpoint name, or through the address prefix&lt;/span&gt;&lt;span style="color:blue;"&gt;--&amp;gt;&lt;br /&gt;          &amp;lt;&lt;/span&gt;&lt;span&gt;add &lt;/span&gt;&lt;span style="color:red;"&gt;filterName&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;Service1Filter&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;endpointName&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;service1ClientEndPoint&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;priority&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;1&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;/&amp;gt;&lt;br /&gt;          &amp;lt;&lt;/span&gt;&lt;span&gt;add &lt;/span&gt;&lt;span style="color:red;"&gt;filterName&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;Service2Filter&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;endpointName&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;service2ClientEndPoint&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;priority&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;1&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;/&amp;gt;&lt;br /&gt;          &amp;lt;!--&lt;/span&gt;&lt;span style="color:green;"&gt;if none of the other filters have matched, this message showed up on the default router endpoint, with no custom header&lt;/span&gt;&lt;span style="color:blue;"&gt;--&amp;gt;&lt;br /&gt;        &amp;lt;/&lt;/span&gt;&lt;span&gt;filterTable&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;      &amp;lt;/&lt;/span&gt;&lt;span&gt;filterTables&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;    &amp;lt;/&lt;/span&gt;&lt;span&gt;routing&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;  &amp;lt;/&lt;/span&gt;&lt;span&gt;system.serviceModel&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;


&lt;p&gt;now you can access your services via the router service like that:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;private &lt;/span&gt;IService1 GetService()&lt;br /&gt;        {&lt;br /&gt;            BasicHttpBinding binding = &lt;span style="color:blue;"&gt;new &lt;/span&gt;BasicHttpBinding();&lt;br /&gt;            EndpointAddress address = &lt;span style="color:blue;"&gt;new &lt;/span&gt;EndpointAddress(&lt;span&gt;&amp;quot;http://localhost:8689/router.svc/service1&amp;quot;&lt;/span&gt;);&lt;br /&gt;            IService1 proxy = ChannelFactory&amp;lt;IService1&amp;gt;.CreateChannel(binding, address);&lt;br /&gt;            &lt;span style="color:blue;"&gt;return &lt;/span&gt;proxy;&lt;br /&gt;        }&lt;/pre&gt;
&lt;div&gt;
    &lt;a href="http://dotnetshoutout.com/Submit?url=http://blogs.microsoft.co.il/blogs/gadib/archive/2010/12/06/wcf-4-0-routing.aspx"&gt;
        &lt;img src="http://dotnetshoutout.com/image.axd?url=http://blogs.microsoft.co.il/blogs/gadib/archive/2010/12/06/wcf-4-0-routing.aspx" alt="Shout it" style="border:0px none;" /&gt;
    &lt;/a&gt;
&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=752976" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/gadib/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.microsoft.co.il/blogs/gadib/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blogs.microsoft.co.il/blogs/gadib/archive/tags/Architecture/default.aspx">Architecture</category></item><item><title>WCF and Unity 2.0</title><link>http://blogs.microsoft.co.il/blogs/gadib/archive/2010/11/30/wcf-and-unity-2-0.aspx</link><pubDate>Tue, 30 Nov 2010 17:43:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:751455</guid><dc:creator>gadib</dc:creator><slash:comments>6</slash:comments><comments>http://blogs.microsoft.co.il/blogs/gadib/archive/2010/11/30/wcf-and-unity-2-0.aspx#comments</comments><description>&lt;p&gt;In my previous posts on &lt;a href="http://blogs.microsoft.co.il/blogs/gadib/archive/2010/11/07/dependency-injection-using-unity-2-0-and-enterprise-library-5-0.aspx"&gt;Unity 2.0 and infrastructure&lt;/a&gt; and &lt;a href="http://blogs.microsoft.co.il/blogs/gadib/archive/2010/11/21/application-architecture-using-unity-2-0.aspx"&gt;Unity 2.0 and application architecture&lt;/a&gt; I&amp;#39;ve shown how can Unity 2.0 can be used In order to create loose coupled layers in your application and I&amp;#39;ve explained how dependency injection can be used for this matter.&lt;/p&gt;  &lt;p&gt;If you are developing a distributed application using WCF services (very common scenario this days…) you might consider using Unity 2.0 With WCF services and therefore use dependency injection pattern throughout your application.&lt;/p&gt;  &lt;p&gt;Think about a scenario when you got an client application developed against your WCF services but you haven&amp;#39;t got to develop the services yet.&lt;/p&gt;  &lt;p&gt;In this scenario you have to provide the service contract for your services and the developers of the client application can create their own application Using their own implementation using mock services (check out my previous posts to see how it&amp;#39;s done).&lt;/p&gt;  &lt;p&gt;Let&amp;#39;s get to work.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;Extending WCF to work with Unity 2.0&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;in order to work with Unity 2.0 containers in WCF, you&amp;#39;ll need to extend some components.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;Creating a custom instance provider&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;The &lt;i&gt;IInstanceProvicder&lt;/i&gt; interface is responsible for the creating and the recycling of the service. The following code implement this interface using a Unity container.&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;namespace &lt;/span&gt;Common.WCF&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color:blue;"&gt;public class &lt;/span&gt;&lt;span&gt;UnityInstanceProvider &lt;/span&gt;: IInstanceProvider&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color:blue;"&gt;public &lt;/span&gt;UnityContainer Container { &lt;span style="color:blue;"&gt;set&lt;/span&gt;; &lt;span style="color:blue;"&gt;get&lt;/span&gt;; }&lt;br /&gt;        &lt;span style="color:blue;"&gt;public &lt;/span&gt;&lt;span&gt;Type &lt;/span&gt;ServiceType { &lt;span style="color:blue;"&gt;set&lt;/span&gt;; &lt;span style="color:blue;"&gt;get&lt;/span&gt;; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span style="color:blue;"&gt;public &lt;/span&gt;UnityInstanceProvider() : &lt;span style="color:blue;"&gt;this&lt;/span&gt;(&lt;span style="color:blue;"&gt;null&lt;/span&gt;)&lt;br /&gt;        {&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color:blue;"&gt;public &lt;/span&gt;UnityInstanceProvider(&lt;span&gt;Type &lt;/span&gt;type)&lt;br /&gt;        {&lt;br /&gt;            ServiceType = type;&lt;br /&gt;            Container = &lt;span style="color:blue;"&gt;new &lt;/span&gt;UnityContainer();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color:green;"&gt;// Get Service instace via unity container&lt;br /&gt;        &lt;/span&gt;&lt;span style="color:blue;"&gt;public object &lt;/span&gt;GetInstance(InstanceContext instanceContext, Message message)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color:blue;"&gt;return &lt;/span&gt;Container.Resolve(ServiceType);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color:blue;"&gt;public object &lt;/span&gt;GetInstance(System.ServiceModel.InstanceContext instanceContext)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color:blue;"&gt;return &lt;/span&gt;GetInstance(instanceContext, &lt;span style="color:blue;"&gt;null&lt;/span&gt;);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color:blue;"&gt;public void &lt;/span&gt;ReleaseInstance(InstanceContext instanceContext, &lt;span style="color:blue;"&gt;object &lt;/span&gt;instance)&lt;br /&gt;        {&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;


&lt;p&gt;&lt;b&gt;&lt;u&gt;Create a custom service behavior&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;We&amp;#39;ll create the custom service behavior to use our custom instance provider at run time. When &lt;i&gt;ApplyDispatchBehaviour&lt;/i&gt; event is evoked, each end point will get the instance provider.&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;namespace &lt;/span&gt;Common.WCF&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color:blue;"&gt;public class &lt;/span&gt;&lt;span&gt;UnityServiceBehavior &lt;/span&gt;: IServiceBehavior&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color:blue;"&gt;public &lt;/span&gt;UnityInstanceProvider InstanceProvider { &lt;span style="color:blue;"&gt;get&lt;/span&gt;; &lt;span style="color:blue;"&gt;set&lt;/span&gt;; }&lt;br /&gt;        &lt;span style="color:blue;"&gt;private &lt;/span&gt;ServiceHost serviceHost = &lt;span style="color:blue;"&gt;null&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;        &lt;span style="color:blue;"&gt;public &lt;/span&gt;UnityServiceBehavior()&lt;br /&gt;        {&lt;br /&gt;            InstanceProvider = &lt;span style="color:blue;"&gt;new &lt;/span&gt;UnityInstanceProvider();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color:blue;"&gt;public &lt;/span&gt;UnityServiceBehavior(UnityContainer unity)&lt;br /&gt;        {&lt;br /&gt;            InstanceProvider = &lt;span style="color:blue;"&gt;new &lt;/span&gt;UnityInstanceProvider();&lt;br /&gt;            InstanceProvider.Container = unity;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color:blue;"&gt;public void &lt;/span&gt;AddBindingParameters(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase,&lt;/pre&gt;

&lt;blockquote&gt;
  &lt;pre class="code"&gt;        &lt;span&gt;Collection&lt;/span&gt;&amp;lt;ServiceEndpoint&amp;gt; endpoints, BindingParameterCollection bindingParameters)&lt;br /&gt;        {&lt;br /&gt;            &lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color:blue;"&gt;public void &lt;/span&gt;ApplyDispatchBehavior(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color:blue;"&gt;foreach &lt;/span&gt;(ChannelDispatcherBase cdb &lt;span style="color:blue;"&gt;in &lt;/span&gt;serviceHostBase.ChannelDispatchers)&lt;br /&gt;            {&lt;br /&gt;                ChannelDispatcher cd = cdb &lt;span style="color:blue;"&gt;as &lt;/span&gt;ChannelDispatcher;&lt;br /&gt;                &lt;span style="color:blue;"&gt;if &lt;/span&gt;(cd != &lt;span style="color:blue;"&gt;null&lt;/span&gt;)&lt;br /&gt;                {&lt;br /&gt;                    &lt;span style="color:blue;"&gt;foreach &lt;/span&gt;(EndpointDispatcher ed &lt;span style="color:blue;"&gt;in &lt;/span&gt;cd.Endpoints)&lt;br /&gt;                    {&lt;br /&gt;                        InstanceProvider.ServiceType = serviceDescription.ServiceType;&lt;br /&gt;                        ed.DispatchRuntime.InstanceProvider = InstanceProvider;&lt;br /&gt;                    }&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color:blue;"&gt;public void &lt;/span&gt;Validate(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase) { }&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;b&gt;&lt;u&gt;Creating a custom service host&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;The service host is responsible for loading the service and applying all configuration data for it. Here we&amp;#39;ll create a Unity container for the service behavior to use.&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;namespace &lt;/span&gt;Common.WCF&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color:blue;"&gt;public class &lt;/span&gt;&lt;span&gt;UnityServiceHost &lt;/span&gt;: ServiceHost&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color:blue;"&gt;public &lt;/span&gt;UnityContainer Container { &lt;span style="color:blue;"&gt;get&lt;/span&gt;; &lt;span style="color:blue;"&gt;set&lt;/span&gt;; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span style="color:blue;"&gt;public &lt;/span&gt;UnityServiceHost()&lt;br /&gt;            : &lt;span style="color:blue;"&gt;base&lt;/span&gt;()&lt;br /&gt;        {&lt;br /&gt;            Container = &lt;span style="color:blue;"&gt;new &lt;/span&gt;UnityContainer();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color:blue;"&gt;public &lt;/span&gt;UnityServiceHost(&lt;span&gt;Type &lt;/span&gt;serviceType, &lt;span style="color:blue;"&gt;params &lt;/span&gt;Uri[] baseAddresses) : &lt;span style="color:blue;"&gt;base&lt;/span&gt;(serviceType,baseAddresses)&lt;br /&gt;        {&lt;br /&gt;            Container = &lt;span style="color:blue;"&gt;new &lt;/span&gt;UnityContainer();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color:blue;"&gt;protected override void &lt;/span&gt;OnOpening()&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color:blue;"&gt;base&lt;/span&gt;.OnOpening();&lt;br /&gt;&lt;br /&gt;            &lt;span style="color:blue;"&gt;if &lt;/span&gt;(&lt;span style="color:blue;"&gt;this&lt;/span&gt;.Description.Behaviors.Find&amp;lt;UnityServiceBehavior&amp;gt;() == &lt;span style="color:blue;"&gt;null&lt;/span&gt;)&lt;br /&gt;                &lt;span style="color:blue;"&gt;this&lt;/span&gt;.Description.Behaviors.Add(&lt;span style="color:blue;"&gt;new &lt;/span&gt;UnityServiceBehavior(Container));&lt;br /&gt; &lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;


&lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;u&gt;Creating a custom service host factory&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;The service host factory class will help us create our custom service host dynamically at run time. Here the container will read it&amp;#39;s data from the configuration.&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;namespace &lt;/span&gt;Common.WCF&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color:blue;"&gt;public class &lt;/span&gt;&lt;span&gt;UnityServiceHostFactory &lt;/span&gt;: ServiceHostFactory&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color:blue;"&gt;protected override &lt;/span&gt;ServiceHost CreateServiceHost(&lt;span&gt;Type &lt;/span&gt;serviceType, Uri[] baseAddresses)&lt;br /&gt;        {&lt;br /&gt;            UnityServiceHost serviceHost = &lt;span style="color:blue;"&gt;new &lt;/span&gt;UnityServiceHost(serviceType, baseAddresses);&lt;br /&gt;            UnityContainer container = &lt;span style="color:blue;"&gt;new &lt;/span&gt;UnityContainer();&lt;br /&gt;            serviceHost.Container = container;&lt;br /&gt;&lt;br /&gt;            &lt;span style="color:green;"&gt;//configure container&lt;br /&gt;            &lt;/span&gt;UnityConfigurationSection section = (UnityConfigurationSection)ConfigurationManager.GetSection(&lt;span&gt;&amp;quot;unity&amp;quot;&lt;/span&gt;);&lt;br /&gt;            section.Configure(serviceHost.Container);&lt;br /&gt;            &lt;span style="color:blue;"&gt;return &lt;/span&gt;serviceHost; &lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;


&lt;p&gt;&lt;b&gt;&lt;u&gt;Creating a unity WCF Service&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;All use need to do now is add a reference to the service host factory. Here&amp;#39;s an SVC file for example :&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="background:none repeat scroll 0% 0% yellow;"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color:blue;"&gt;@ &lt;/span&gt;&lt;span style="color:maroon;"&gt;ServiceHost &lt;/span&gt;&lt;span style="color:red;"&gt;Language&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;C#&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;Debug&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;true&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;Service&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Server.Services.ExampleService&amp;quot;&lt;/span&gt;&lt;/pre&gt;

&lt;pre class="code"&gt;&lt;span style="color:red;"&gt;Factory&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Common.WCF.UnityServiceHostFactory&amp;quot; &lt;/span&gt;&lt;span style="background:none repeat scroll 0% 0% yellow;"&gt;%&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;


&lt;p&gt;That&amp;#39;s it. Just configure the service contract in the Unity configuration section on your web.config file and you&amp;#39;re set to go.&lt;/p&gt;

&lt;div&gt;
    &lt;a href="http://dotnetshoutout.com/Submit?url=http://blogs.microsoft.co.il/blogs/gadib/archive/2010/11/30/wcf-and-unity-2-0.aspx"&gt;
        &lt;img src="http://dotnetshoutout.com/image.axd?url=http://blogs.microsoft.co.il/blogs/gadib/archive/2010/11/30/wcf-and-unity-2-0.aspx" alt="Shout it" style="border:0px none;" /&gt;
    &lt;/a&gt;
&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=751455" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/gadib/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blogs.microsoft.co.il/blogs/gadib/archive/tags/Architecture/default.aspx">Architecture</category></item></channel></rss>