<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Ido Flatow&amp;#39;s Blog&lt;h3&gt;Veni Vidi Scripsi&lt;/h3&gt;</title><link>http://blogs.microsoft.co.il/blogs/idof/</link><description /><dc:language>en</dc:language><generator>CommunityServer 2007.1 (Build: 20917.1142)</generator><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/IdoFlatowsBlog" /><feedburner:info uri="idoflatowsblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item><title>Calling a WCF service from a client without having the contract interface</title><link>http://feedproxy.google.com/~r/IdoFlatowsBlog/~3/thl6VlxselA/calling-a-wcf-service-from-a-client-without-having-the-contract-interface.aspx</link><pubDate>Thu, 09 Feb 2012 22:47:29 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1010779</guid><dc:creator>Ido Flatow</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.microsoft.co.il/blogs/idof/rsscomments.aspx?PostID=1010779</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/idof/archive/2012/02/10/calling-a-wcf-service-from-a-client-without-having-the-contract-interface.aspx#comments</comments><description>&lt;p&gt;I was asked yesterday in the Hebrew C#/.NET Framework MSDN forums a &lt;a href="http://social.msdn.microsoft.com/Forums/he-IL/nethe/thread/1678e16f-877c-44c9-9ccf-9b9c39bc51b4"&gt;tough question&lt;/a&gt; – is it possible to dynamically call a WCF service using only the contract name, operation name, and metadata address?&lt;/p&gt;  &lt;p&gt;At first I agreed with the answer given in the forum – move from SOAP bindings to WebHttpBinding (“REST”). This of course makes things a lot easier, only requiring you to create a WebHttpRequest and parse the response. However the question remains - is it possible to do this in the case of a SOAP-based service endpoint? &lt;/p&gt;  &lt;p&gt;The short answer is – YES! &lt;/p&gt;  &lt;p&gt;The full answer is – YES, but you’ll need to do a lot of coding to make it work properly, and even more coding for complex scenarios (who said passing a data contract?)&lt;/p&gt;  &lt;p&gt;How is it done you ask?&lt;/p&gt;  &lt;p&gt;First let’s start with the contract – you have a simple contract that looks like so:&lt;/p&gt;  &lt;div class="csharpcode"&gt;   &lt;pre&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;[ServiceContract]&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;interface&lt;/span&gt; ICalculator&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;{&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;  [OperationContract]&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;  &lt;span class="kwrd"&gt;double&lt;/span&gt; Add(&lt;span class="kwrd"&gt;double&lt;/span&gt; n1, &lt;span class="kwrd"&gt;double&lt;/span&gt; n2);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;  [OperationContract]&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;  &lt;span class="kwrd"&gt;double&lt;/span&gt; Subtract(&lt;span class="kwrd"&gt;double&lt;/span&gt; n1, &lt;span class="kwrd"&gt;double&lt;/span&gt; n2);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;  [OperationContract]&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;  &lt;span class="kwrd"&gt;double&lt;/span&gt; Multiply(&lt;span class="kwrd"&gt;double&lt;/span&gt; n1, &lt;span class="kwrd"&gt;double&lt;/span&gt; n2);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;  [OperationContract]&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;  &lt;span class="kwrd"&gt;double&lt;/span&gt; Divide(&lt;span class="kwrd"&gt;double&lt;/span&gt; n1, &lt;span class="kwrd"&gt;double&lt;/span&gt; n2);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;At this point the implementation doesn’t matter, but you can assume the service compiles and loads successfully.&lt;/p&gt;

&lt;p&gt;Second, make sure your service has either a MEX endpoint or metadata exposed over HTTP GET. Read &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2011/08/10/wsdl-vs-mex-knockout-or-tie.aspx"&gt;here&lt;/a&gt; for more info about the difference between the two.&lt;/p&gt;

&lt;p&gt;Third – do the client coding!!! to create the client code I took some ideas from the following links:&lt;/p&gt;

&lt;p&gt;&lt;a title="http://msdn.microsoft.com/en-us/library/ms733780.aspx" href="http://msdn.microsoft.com/en-us/library/ms733780.aspx"&gt;http://msdn.microsoft.com/en-us/library/ms733780.aspx&lt;/a&gt; – generating client-side type information for WCF contracts &lt;/p&gt;

&lt;p&gt;&lt;a title="http://www.codeproject.com/Articles/42278/Call-a-Web-Service-Without-Adding-a-Web-Reference" href="http://www.codeproject.com/Articles/42278/Call-a-Web-Service-Without-Adding-a-Web-Reference"&gt;http://www.codeproject.com/Articles/42278/Call-a-Web-Service-Without-Adding-a-Web-Reference&lt;/a&gt; – the same concept of dynamic calls, but for ASP.NET web services (ASMX).&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;div class="csharpcode"&gt;
    &lt;pre&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Linq;&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.ServiceModel;&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.ServiceModel.Description;&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Globalization;&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.ObjectModel;&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.CodeDom.Compiler;&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; Client&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;{&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;    &lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;    {&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;        &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main(&lt;span class="kwrd"&gt;string&lt;/span&gt;[] args)&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;        {&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;            &lt;span class="rem"&gt;// Define the metadata address, contract name, operation name, and parameters. &lt;/span&gt;&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;            &lt;span class="rem"&gt;// You can choose between MEX endpoint and HTTP GET by changing the address and enum value.&lt;/span&gt;&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;            Uri mexAddress = &lt;span class="kwrd"&gt;new&lt;/span&gt; Uri(&lt;span class="str"&gt;&amp;quot;http://localhost:8732/CalculatorService/?wsdl&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;            &lt;span class="rem"&gt;// For MEX endpoints use a MEX address and a mexMode of .MetadataExchange&lt;/span&gt;&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;            MetadataExchangeClientMode mexMode = MetadataExchangeClientMode.HttpGet;            &lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;            &lt;span class="kwrd"&gt;string&lt;/span&gt; contractName = &lt;span class="str"&gt;&amp;quot;ICalculator&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;            &lt;span class="kwrd"&gt;string&lt;/span&gt; operationName = &lt;span class="str"&gt;&amp;quot;Add&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;            &lt;span class="kwrd"&gt;object&lt;/span&gt;[] operationParameters = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;object&lt;/span&gt;[] { 1, 2 };&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;            &lt;span class="rem"&gt;// Get the metadata file from the service.&lt;/span&gt;&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;            MetadataExchangeClient mexClient = &lt;span class="kwrd"&gt;new&lt;/span&gt; MetadataExchangeClient(mexAddress, mexMode);&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;            mexClient.ResolveMetadataReferences = &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;            MetadataSet metaSet = mexClient.GetMetadata();&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;            &lt;span class="rem"&gt;// Import all contracts and endpoints&lt;/span&gt;&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;            WsdlImporter importer = &lt;span class="kwrd"&gt;new&lt;/span&gt; WsdlImporter(metaSet);&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt;            Collection&amp;lt;ContractDescription&amp;gt; contracts = importer.ImportAllContracts();&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  33:  &lt;/span&gt;            ServiceEndpointCollection allEndpoints = importer.ImportAllEndpoints();&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  34:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  35:  &lt;/span&gt;            &lt;span class="rem"&gt;// Generate type information for each contract&lt;/span&gt;&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  36:  &lt;/span&gt;            ServiceContractGenerator generator = &lt;span class="kwrd"&gt;new&lt;/span&gt; ServiceContractGenerator();&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  37:  &lt;/span&gt;            var endpointsForContracts = &lt;span class="kwrd"&gt;new&lt;/span&gt; Dictionary&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;, IEnumerable&amp;lt;ServiceEndpoint&amp;gt;&amp;gt;();&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  38:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  39:  &lt;/span&gt;            &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (ContractDescription contract &lt;span class="kwrd"&gt;in&lt;/span&gt; contracts)&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  40:  &lt;/span&gt;            {&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  41:  &lt;/span&gt;                generator.GenerateServiceContractType(contract);&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  42:  &lt;/span&gt;                &lt;span class="rem"&gt;// Keep a list of each contract&amp;#39;s endpoints&lt;/span&gt;&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  43:  &lt;/span&gt;                endpointsForContracts[contract.Name] = allEndpoints.Where(&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  44:  &lt;/span&gt;                    se =&amp;gt; se.Contract.Name == contract.Name).ToList();&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  45:  &lt;/span&gt;            }&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  46:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  47:  &lt;/span&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (generator.Errors.Count != 0)&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  48:  &lt;/span&gt;                &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; Exception(&lt;span class="str"&gt;&amp;quot;There were errors during code compilation.&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  49:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  50:  &lt;/span&gt;            &lt;span class="rem"&gt;// Generate a code file for the contracts &lt;/span&gt;&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  51:  &lt;/span&gt;            CodeGeneratorOptions options = &lt;span class="kwrd"&gt;new&lt;/span&gt; CodeGeneratorOptions();&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  52:  &lt;/span&gt;            options.BracingStyle = &lt;span class="str"&gt;&amp;quot;C&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  53:  &lt;/span&gt;            CodeDomProvider codeDomProvider = CodeDomProvider.CreateProvider(&lt;span class="str"&gt;&amp;quot;C#&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  54:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  55:  &lt;/span&gt;            &lt;span class="rem"&gt;// Compile the code file to an in-memory assembly&lt;/span&gt;&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  56:  &lt;/span&gt;            &lt;span class="rem"&gt;// Don&amp;#39;t forget to add all WCF-related assemblies as references&lt;/span&gt;&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  57:  &lt;/span&gt;            CompilerParameters compilerParameters = &lt;span class="kwrd"&gt;new&lt;/span&gt; CompilerParameters(&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  58:  &lt;/span&gt;                &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt;[] { &lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  59:  &lt;/span&gt;                    &lt;span class="str"&gt;&amp;quot;System.dll&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;System.ServiceModel.dll&amp;quot;&lt;/span&gt;, &lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  60:  &lt;/span&gt;                    &lt;span class="str"&gt;&amp;quot;System.Runtime.Serialization.dll&amp;quot;&lt;/span&gt; });&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  61:  &lt;/span&gt;            compilerParameters.GenerateInMemory = &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  62:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  63:  &lt;/span&gt;            CompilerResults results = codeDomProvider.CompileAssemblyFromDom(&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  64:  &lt;/span&gt;                compilerParameters, generator.TargetCompileUnit);&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  65:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  66:  &lt;/span&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (results.Errors.Count &amp;gt; 0)&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  67:  &lt;/span&gt;            {&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  68:  &lt;/span&gt;                &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; Exception(&lt;span class="str"&gt;&amp;quot;There were errors during generated code compilation&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  69:  &lt;/span&gt;            }&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  70:  &lt;/span&gt;            &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  71:  &lt;/span&gt;            {&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  72:  &lt;/span&gt;                &lt;span class="rem"&gt;// Find the proxy type that was generated for the specified contract&lt;/span&gt;&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  73:  &lt;/span&gt;                &lt;span class="rem"&gt;// (identified by a class that implements the contract and ICommunicationbject)&lt;/span&gt;&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  74:  &lt;/span&gt;                Type clientProxyType = results.CompiledAssembly.GetTypes().First(&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  75:  &lt;/span&gt;                    t =&amp;gt; t.IsClass &amp;amp;&amp;amp;&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  76:  &lt;/span&gt;                        t.GetInterface(contractName) != &lt;span class="kwrd"&gt;null&lt;/span&gt; &amp;amp;&amp;amp;&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  77:  &lt;/span&gt;                        t.GetInterface(&lt;span class="kwrd"&gt;typeof&lt;/span&gt;(ICommunicationObject).Name) != &lt;span class="kwrd"&gt;null&lt;/span&gt;);&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  78:  &lt;/span&gt;                        &lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  79:  &lt;/span&gt;                &lt;span class="rem"&gt;// Get the first service endpoint for the contract&lt;/span&gt;&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  80:  &lt;/span&gt;                ServiceEndpoint se = endpointsForContracts[contractName].First();                    &lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  81:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  82:  &lt;/span&gt;                &lt;span class="rem"&gt;// Create an instance of the proxy&lt;/span&gt;&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  83:  &lt;/span&gt;                &lt;span class="rem"&gt;// Pass the endpoint&amp;#39;s binding and address as parameters&lt;/span&gt;&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  84:  &lt;/span&gt;                &lt;span class="rem"&gt;// to the ctor&lt;/span&gt;&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  85:  &lt;/span&gt;                &lt;span class="kwrd"&gt;object&lt;/span&gt; instance = results.CompiledAssembly.CreateInstance(&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  86:  &lt;/span&gt;                    clientProxyType.Name, &lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  87:  &lt;/span&gt;                    &lt;span class="kwrd"&gt;false&lt;/span&gt;, &lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  88:  &lt;/span&gt;                    System.Reflection.BindingFlags.CreateInstance, &lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  89:  &lt;/span&gt;                    &lt;span class="kwrd"&gt;null&lt;/span&gt;,&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  90:  &lt;/span&gt;                    &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;object&lt;/span&gt;[] { se.Binding, se.Address }, &lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  91:  &lt;/span&gt;                    CultureInfo.CurrentCulture, &lt;span class="kwrd"&gt;null&lt;/span&gt;);&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  92:  &lt;/span&gt;                &lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  93:  &lt;/span&gt;                &lt;span class="rem"&gt;// Get the operation&amp;#39;s method, invoke it, and get the return value&lt;/span&gt;&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  94:  &lt;/span&gt;                &lt;span class="kwrd"&gt;object&lt;/span&gt; retVal = instance.GetType().GetMethod(operationName).&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  95:  &lt;/span&gt;                    Invoke(instance, operationParameters);&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  96:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  97:  &lt;/span&gt;                Console.WriteLine(retVal.ToString());&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  98:  &lt;/span&gt;            }&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  99:  &lt;/span&gt;        }&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt; 100:  &lt;/span&gt;    }&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt; 101:  &lt;/span&gt;}&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;I’ve placed comments that describe the code, but basically it imports the WSDL, generates types for the contract (service + data), generates C# code from it, compiles it, and uses reflection to create a proxy and invoke the correct method.&lt;/p&gt;

&lt;p&gt;If you want to use this technique to call methods that require a data contract, you will need some extra work to create the correct type and initialize it.&lt;/p&gt;

&lt;p&gt;A compiled and running version of this code (+ the service) can be found here: &lt;a title="https://skydrive.live.com/redir.aspx?cid=5ef5be1ab30a6056&amp;amp;resid=5EF5BE1AB30A6056!466&amp;amp;parid=5EF5BE1AB30A6056!129" href="https://skydrive.live.com/redir.aspx?cid=5ef5be1ab30a6056&amp;amp;resid=5EF5BE1AB30A6056!466&amp;amp;parid=5EF5BE1AB30A6056!129"&gt;https://skydrive.live.com/redir.aspx?cid=5ef5be1ab30a6056&amp;amp;resid=5EF5BE1AB30A6056!466&amp;amp;parid=5EF5BE1AB30A6056!129&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hope you find this piece of code useful.&lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="margin:0px;padding:0px 0px 0px 0px;"&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://blogs.microsoft.co.il/blogs/idof/archive/2012/02/10/calling-a-wcf-service-from-a-client-without-having-the-contract-interface.aspx"&gt;&lt;img border="0" alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://blogs.microsoft.co.il/blogs/idof/archive/2012/02/10/calling-a-wcf-service-from-a-client-without-having-the-contract-interface.aspx&amp;amp;bgcolor=6600FF" /&gt;&lt;/a&gt; &lt;a href="http://dotnetshoutout.com/Submit?url=http://blogs.microsoft.co.il/blogs/idof/archive/2012/02/10/calling-a-wcf-service-from-a-client-without-having-the-contract-interface.aspx"&gt;&lt;img alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http://blogs.microsoft.co.il/blogs/idof/archive/2012/02/10/calling-a-wcf-service-from-a-client-without-having-the-contract-interface.aspx" style="border:0px;" /&gt;&lt;/a&gt; 			

&lt;div class="addthis_toolbox addthis_default_style "&gt;
&lt;a class="addthis_button_preferred_1"&gt;&lt;/a&gt;
&lt;a class="addthis_button_preferred_2"&gt;&lt;/a&gt;
&lt;a class="addthis_button_preferred_3"&gt;&lt;/a&gt;
&lt;a class="addthis_button_preferred_4"&gt;&lt;/a&gt;
&lt;a class="addthis_button_compact"&gt;&lt;/a&gt;
&lt;a class="addthis_counter addthis_bubble_style"&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#pubid=ra-4f27f7864794397c"&gt;&lt;/script&gt;
&lt;a href="http://www.codeproject.com/script/Articles/BlogFeedList.aspx?amid=2199681" rel="tag" style="display:none;"&gt;CodeProject&lt;/a&gt; &lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1010779" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/WCF/default.aspx">WCF</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/CodeDom/default.aspx">CodeDom</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/mex/default.aspx">mex</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/WsdlImporter/default.aspx">WsdlImporter</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/WCF+Client/default.aspx">WCF Client</category><feedburner:origLink>http://blogs.microsoft.co.il/blogs/idof/archive/2012/02/10/calling-a-wcf-service-from-a-client-without-having-the-contract-interface.aspx</feedburner:origLink></item><item><title>WCF/ASMX Interoperability – Removing the Annoying xxxSpecified when Adding a Web Reference to a WCF Service</title><link>http://feedproxy.google.com/~r/IdoFlatowsBlog/~3/a3wsKWQIq2M/wcf-asmx-interoperability-removing-the-annoying-xxxspecified-when-adding-a-web-reference-to-a-wcf-service.aspx</link><pubDate>Tue, 31 Jan 2012 18:22:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1003550</guid><dc:creator>Ido Flatow</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.microsoft.co.il/blogs/idof/rsscomments.aspx?PostID=1003550</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/idof/archive/2012/01/31/wcf-asmx-interoperability-removing-the-annoying-xxxspecified-when-adding-a-web-reference-to-a-wcf-service.aspx#comments</comments><description>&lt;p&gt;Today I answered a &lt;a href="http://social.msdn.microsoft.com/Forums/he-IL/nethe/thread/53c28854-d853-4713-a389-132a28dd0297"&gt;question&lt;/a&gt; in the Hebrew MSDN forums about consuming WCF from a .NET 2 client, using the “Add Web Reference” option of Visual Studio.&lt;/p&gt;
&lt;p&gt;Just in case you don’t know Hebrew I’ll sum it up for you – when adding a web reference to a WCF service that exposes a method of the following sort:&lt;/p&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;int&lt;/span&gt; UseScalarTypes(&lt;span class="kwrd"&gt;int&lt;/span&gt; value1, &lt;span class="kwrd"&gt;int&lt;/span&gt; value2)&lt;/pre&gt;
&lt;p&gt;The generated method signature in the client app will look like so:&lt;/p&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; UseScalarTypes(
  &lt;span class="kwrd"&gt;int&lt;/span&gt; value1, &lt;span class="kwrd"&gt;bool&lt;/span&gt; value1Specified, 
  &lt;span class="kwrd"&gt;int&lt;/span&gt; value2, &lt;span class="kwrd"&gt;bool&lt;/span&gt; value2Specified, 
  &lt;span class="kwrd"&gt;out&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; UseScalarTypesResult, &lt;span class="kwrd"&gt;out&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; UseScalarTypesResultSpecified)&lt;/pre&gt;
&lt;p&gt;The question was why this happens and how this can be fixed to look like the service’s method signature.&lt;/p&gt;
&lt;p&gt;Before we continue to see why this happens and how to fix it, the short answer is – Yes, you can make it look like the original contract by using message contracts. Continue reading to see how.&lt;/p&gt;
&lt;p&gt;Why this happens:&lt;/p&gt;
&lt;p&gt;In WCF the WSDL generated for the above method looks like so:&lt;/p&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xs:element&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;UseScalarTypes&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xs:complexType&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xs:sequence&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xs:element&lt;/span&gt; &lt;span class="attr"&gt;minOccurs&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;0&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;value1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;xs:int&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; 
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xs:element&lt;/span&gt; &lt;span class="attr"&gt;minOccurs&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;0&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;value2&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;xs:int&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; 
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;xs:sequence&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;xs:complexType&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;xs:element&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;Notice the &lt;strong&gt;minOccurs&lt;/strong&gt;? int is a value type which means it doesn’t accept null values, but still WCF marks it as optional. When you use the “Add Service Reference” option of WCF in Visual Studio, the generator ignores that attribute and creates the method declaration in the client side the same way it is declared in the service contract. However, if you use the old “Add Web Reference” option, the generator checks the minOccurs, realizes that the variable is optional, and since this is a value type, it translates the optional into a set of variables: value + xxxSpecified.&lt;/p&gt;
&lt;p&gt;By the way, this is how the WSDL is created for the same method declaration when it is used in an ASMX-style web service:&lt;/p&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;s:element&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;UseScalarTypes&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;s:complexType&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;s:sequence&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;s:element&lt;/span&gt; &lt;span class="attr"&gt;minOccurs&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;maxOccurs&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;value1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;s:int&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; 
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;s:element&lt;/span&gt; &lt;span class="attr"&gt;minOccurs&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;maxOccurs&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;value2&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;s:int&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; 
  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;s:sequence&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;s:complexType&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;s:element&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Note 1&lt;/strong&gt;: With ASMX web service, the minOccurs/maxOccurs is set properly because the “Add Web Reference” expects that, and therefore we don’t see this behavior with ASMX web service + add web reference. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note 2&lt;/strong&gt;: Since WCF ignores the minOccurs, using the “Add Service Reference” to consume that ASMX web service will result in a client-side method with the same signature as declared in the service (without the xxxSpecified).&lt;/p&gt;
&lt;p&gt;So now that we know why this happens, let’s see how to fix it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 1&lt;/strong&gt;: Create a set of message contracts, one for the request and one for the response (if you have one). &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 2&lt;/strong&gt;: In the request message contract class, apply the &lt;strong&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms586728.aspx"&gt;MessageContract&lt;/a&gt;&lt;/strong&gt; attribute and set the &lt;strong&gt;IsWrapped&lt;/strong&gt; parameter to &lt;strong&gt;false&lt;/strong&gt;, like so: &lt;/p&gt;&lt;pre class="csharpcode"&gt;[MessageContract(IsWrapped = &lt;span class="kwrd"&gt;false&lt;/span&gt;)]
&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; UseScalarTypesRequest&lt;/pre&gt;
&lt;p&gt;Setting the IsWrapped to false will create the XML without a wrapping element, making the properties look like they are actually method parameters.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 3&lt;/strong&gt;: Add each parameter of the method to the class as a property, and apply the &lt;strong&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/system.servicemodel.messagebodymemberattribute.aspx"&gt;MessageBodyMember&lt;/a&gt;&lt;/strong&gt; attribute to it. You can use this step to rename the property to use the naming convention of parameters by using the &lt;strong&gt;Name&lt;/strong&gt; parameter in the attribute. The result should look like so:&lt;/p&gt;&lt;pre class="csharpcode"&gt;[MessageContract(IsWrapped = &lt;span class="kwrd"&gt;false&lt;/span&gt;)]
&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; UseScalarTypesRequest
{
  [MessageBodyMember(Name = &lt;span class="str"&gt;&amp;quot;value1&amp;quot;&lt;/span&gt;)]
  &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; Value1 { get; set; }
  [MessageBodyMember(Name = &lt;span class="str"&gt;&amp;quot;value2&amp;quot;&lt;/span&gt;)]
  &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; Value2 { get; set; }
}&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Step 4&lt;/strong&gt;: Do the same for the response message contract, this time you just need one property for the return type of the method, for example:&lt;/p&gt;&lt;pre class="csharpcode"&gt;[MessageContract(IsWrapped = &lt;span class="kwrd"&gt;false&lt;/span&gt;)]
&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; UseScalarTypesResponse
{
  [MessageBodyMember]
  &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; Result { get; set; }
}&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Step 5&lt;/strong&gt;: Change the method signature in the contract and service from using parameters to using the message contracts you’ve created, like so:&lt;/p&gt;&lt;pre class="csharpcode"&gt;UseScalarTypesResponse UseScalarTypes(UseScalarTypesRequest parameters)&lt;/pre&gt;
&lt;p&gt;Of course the immediate step will be to also change the implementation of your code to reflect the parameters being moved to a wrapper object - for convenience, you can leave your existing code in the service as is, change the contract, and then create the new methods which will simply call the older ones, like so:&lt;/p&gt;&lt;pre class="csharpcode"&gt;UseScalarTypesResponse UseScalarTypes(UseScalarTypesRequest parameters)
{
  UseScalarTypesResponse result = &lt;span class="kwrd"&gt;new&lt;/span&gt; UseScalarTypesResponse();
  result.Result = UseScalarTypes(parameters.Value1, parameters.Value2);
  &lt;span class="kwrd"&gt;return&lt;/span&gt; result;
}&lt;/pre&gt;
&lt;p&gt;That’s it, update your web reference in the client side, and watch how the method signature in the client side is without the xxxSpecified.&lt;/p&gt;
&lt;div style="PADDING-BOTTOM:0px;MARGIN:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;PADDING-TOP:0px;" class="wlWriterHeaderFooter"&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://blogs.microsoft.co.il/blogs/idof/archive/2012/01/31/wcf-asmx-interoperability-removing-the-annoying-xxxspecified-when-adding-a-web-reference-to-a-wcf-service.aspx"&gt;&lt;img border="0" alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://blogs.microsoft.co.il/blogs/idof/archive/2012/01/31/wcf-asmx-interoperability-removing-the-annoying-xxxspecified-when-adding-a-web-reference-to-a-wcf-service.aspx&amp;amp;bgcolor=6600FF" /&gt;&lt;/a&gt; &lt;a href="http://dotnetshoutout.com/Submit?url=http://blogs.microsoft.co.il/blogs/idof/archive/2012/01/31/wcf-asmx-interoperability-removing-the-annoying-xxxspecified-when-adding-a-web-reference-to-a-wcf-service.aspx"&gt;&lt;img style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;BORDER-TOP:0px;BORDER-RIGHT:0px;" alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http://blogs.microsoft.co.il/blogs/idof/archive/2012/01/31/wcf-asmx-interoperability-removing-the-annoying-xxxspecified-when-adding-a-web-reference-to-a-wcf-service.aspx" /&gt;&lt;/a&gt; 
&lt;div class="addthis_toolbox addthis_default_style "&gt;&lt;a class="addthis_button_preferred_1"&gt;&lt;/a&gt;&lt;a class="addthis_button_preferred_2"&gt;&lt;/a&gt;&lt;a class="addthis_button_preferred_3"&gt;&lt;/a&gt;&lt;a class="addthis_button_preferred_4"&gt;&lt;/a&gt;&lt;a class="addthis_button_compact"&gt;&lt;/a&gt;&lt;a class="addthis_counter addthis_bubble_style"&gt;&lt;/a&gt;&lt;/div&gt;
&lt;script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#pubid=ra-4f27f7864794397c"&gt;&lt;/script&gt;
&lt;a style="DISPLAY:none;" href="http://www.codeproject.com/script/Articles/BlogFeedList.aspx?amid=2199681" rel="tag"&gt;CodeProject&lt;/a&gt; &lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1003550" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/WCF/default.aspx">WCF</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/Interoperability/default.aspx">Interoperability</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/ASMX/default.aspx">ASMX</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/IsSpecified/default.aspx">IsSpecified</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/web+services/default.aspx">web services</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/add+web+reference/default.aspx">add web reference</category><feedburner:origLink>http://blogs.microsoft.co.il/blogs/idof/archive/2012/01/31/wcf-asmx-interoperability-removing-the-annoying-xxxspecified-when-adding-a-web-reference-to-a-wcf-service.aspx</feedburner:origLink></item><item><title>פורום חדש לתחום ווב נפתח בפורומי מיקרוסופט ישראל</title><link>http://feedproxy.google.com/~r/IdoFlatowsBlog/~3/ZMslrFLE5wU/1000453.aspx</link><pubDate>Sat, 28 Jan 2012 19:40:39 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1000453</guid><dc:creator>Ido Flatow</dc:creator><slash:comments>2</slash:comments><wfw:commentRss>http://blogs.microsoft.co.il/blogs/idof/rsscomments.aspx?PostID=1000453</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/idof/archive/2012/01/28/1000453.aspx#comments</comments><description>&lt;div dir="rtl"&gt;   &lt;p&gt;לפני מספר חודשים נפתחו באתר מיקרוסופט MSDN ישראל פורומים לפיתוח ו-IT. בחודש האחרון חל שינוי בפורומים, בקטלוג שלהם, וברשימת מנהלי הפורומים. כחלק מהשינוי אני שמח לבשר לכם על פתיחתו של &lt;a href="http://social.msdn.microsoft.com/Forums/he-IL/webdevhe/threads"&gt;פורום חדש&lt;/a&gt; לתחום הווב בניהולם של &lt;a href="http://blogs.microsoft.co.il/blogs/shlomo"&gt;שלמה גולדברג&lt;/a&gt; (הרב דוטנט) ועבדכם הנאמן.&lt;/p&gt;    &lt;p&gt;בפורום ננסה לתת מענה לשאלות בנושאי פיתוח לעולמות הווב של מיקרוסופט – ASP.NET, ASP.NET MVC, Web Services, WCF, IIS, HTML/JS ועוד.&lt;/p&gt;    &lt;p&gt;להבדיל מהפורומים של MSDN, הפורומים במיקרוסופט ישראל מיועדים לקהל הישראלי, כתובים בעברית, ומעודדים כתיבה בעברית של שאלות ותשובות.&lt;/p&gt;    &lt;p&gt;למה בעברית? למה פורומים נוספים על אלו של MSDN? ובכן:&lt;/p&gt;    &lt;p&gt;1. אנחנו לא היחידים – להרבה מדינות יש פורומים &lt;a href="http://msdn.microsoft.com/he-IL/ms376821"&gt;מקומיים&lt;/a&gt;, בשפה מקומית, שמיועדים לקהל המקומי.&lt;/p&gt;    &lt;p&gt;2. עברית כשפת אם - לחלקנו קל להתבטא יותר בעברית במקום באנגלית. אני מכיר מפתחים מצויינים שעדין משתמשים בבודק איות לפני שליחת מייל באנגלית. כתיבה בעברית גם מאפשרת גישה לפורומים לקהל היותר צעיר של מפתחים.&lt;/p&gt;    &lt;p&gt;3. יצירת קהילה – השתתפות בפורום תאפשר שיתוף פעולה יותר הדוק בין הקהל הישראלי והנציגים בארץ של מיקרוסופט. דרך הפורום נוכל ליידע אתכם על הרצאות בבתים פתוחים, כנסים בארץ,קורסים והכשרות. במקרים מסוימים ייתכן ואף נוכל לבצע אסקלציה של שאלות לגורמים במיקרוסופט ישראל ואף יותר מכך.&lt;/p&gt;    &lt;p&gt;לצערנו, עד כמה שנרצה, פורום לא יכול להסתמך אך ורק על המנהלים שלו שיענו, ולכן ההשתתפות שלהם חיונית להצלחת הפורום. אז גם אם אין לכם שאלה ספציפית, אתם מוזמנים להכנס &lt;a href="http://social.msdn.microsoft.com/Forums/he-IL/webdevhe/threads"&gt;לפורום&lt;/a&gt; מדי פעם, להגיב על שאלות, ללמוד משאלות של אחרים, וגם לספר לנו על משהו מעניין שמצאתם שאולי יכול לשמש אנשים אחרים. אם אתם נוהגים לעבוד עם RSS, אתם מוזמנים להוסיף את לינק ה-&lt;a href="http://social.msdn.microsoft.com/Forums/he-IL/webdevhe/threads?outputAs=rss"&gt;RSS&lt;/a&gt; של הפורום לרשימות שלכם.&lt;/p&gt;    &lt;p&gt;אז נתראה &lt;a href="http://social.msdn.microsoft.com/Forums/he-IL/webdevhe/threads"&gt;בפורום&lt;/a&gt;, &lt;a href="http://blogs.microsoft.co.il/blogs/idof"&gt;בבלוג&lt;/a&gt;, &lt;a href="http://twitter.com/IdoFlatow"&gt;בטוויטר&lt;/a&gt; ובאירועים השונים השנה.&lt;/p&gt;     &lt;/div&gt;&lt;div class="wlWriterHeaderFooter" style="margin:0px;padding:0px 0px 0px 0px;"&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://blogs.microsoft.co.il/blogs/idof/archive/2012/01/28/1000453.aspx"&gt;&lt;img border="0" alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://blogs.microsoft.co.il/blogs/idof/archive/2012/01/28/1000453.aspx&amp;amp;bgcolor=6600FF" /&gt;&lt;/a&gt; &lt;a href="http://dotnetshoutout.com/Submit?url=http://blogs.microsoft.co.il/blogs/idof/archive/2012/01/28/1000453.aspx"&gt;&lt;img alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http://blogs.microsoft.co.il/blogs/idof/archive/2012/01/28/1000453.aspx" style="border:0px;" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1000453" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/forum/default.aspx">forum</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/webdev/default.aspx">webdev</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/msdn/default.aspx">msdn</category><feedburner:origLink>http://blogs.microsoft.co.il/blogs/idof/archive/2012/01/28/1000453.aspx</feedburner:origLink></item><item><title>What’s new in WCF 4.5? Improved streaming in IIS hosting</title><link>http://feedproxy.google.com/~r/IdoFlatowsBlog/~3/l-t0Ip8a7k0/what-s-new-in-wcf-4-5-improved-streaming-in-iis-hosting.aspx</link><pubDate>Tue, 17 Jan 2012 20:36:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:990797</guid><dc:creator>Ido Flatow</dc:creator><slash:comments>8</slash:comments><wfw:commentRss>http://blogs.microsoft.co.il/blogs/idof/rsscomments.aspx?PostID=990797</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/idof/archive/2012/01/17/what-s-new-in-wcf-4-5-improved-streaming-in-iis-hosting.aspx#comments</comments><description>&lt;p&gt;As promised in my &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2012/01/16/dear-blog-it-s-been-a-while-since-my-last-post.aspx"&gt;previous post&lt;/a&gt;, I’m continuing my mission to inform you of new changes in WCF 4.5.&lt;/p&gt;
&lt;p&gt;This is the ninth post in the WCF 4.5 series. This post continues the previous posts on web-hosting features, and this time it is about the improved streaming capabilities of WCF when it is hosted in IIS.&lt;/p&gt;
&lt;p&gt;Previous posts:&lt;/p&gt;
&lt;p&gt;1. &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2011/09/16/what-s-new-in-wcf-4-5-let-s-start-with-wcf-configuration.aspx"&gt;What’s new in WCF 4.5? let’s start with WCF configuration&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;2. &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2011/09/17/what-s-new-in-wcf-4-5-a-single-wsdl-file.aspx"&gt;What’s new in WCF 4.5? a single WSDL file&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;3. &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2011/09/19/what-s-new-in-wcf-4-5-configuration-tooltips-and-intellisense-in-config-files.aspx"&gt;What’s new in WCF 4.5? Configuration tooltips and intellisense in config files&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;4. &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2011/09/25/what-s-new-in-wcf-4-5-configuration-validations.aspx"&gt;What’s new in WCF 4.5? Configuration validations&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;5. &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2011/09/25/what-s-new-in-wcf-4-5-multiple-authentication-support-on-a-single-endpoint-in-iis.aspx"&gt;What’s new in WCF 4.5? Multiple authentication support on a single endpoint in IIS&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;6. &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2011/10/05/what-s-new-in-wcf-4-5-automatic-https-endpoint-for-iis.aspx"&gt;What’s new in WCF 4.5? Automatic HTTPS endpoint for IIS&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;7. &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2011/10/10/what-s-new-in-wcf-4-5-basichttpsbinding.aspx"&gt;What’s new in WCF 4.5? BasicHttpsBinding&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;8. &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2011/10/31/what-s-new-in-wcf-4-5-changed-default-for-asp-net-compatibility-mode.aspx"&gt;What’s new in WCF 4.5? Changed default for ASP.NET compatibility mode&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you’ve ever tried creating a WCF service that uses streamed requests (for example a file upload service) and host it in IIS, you may have noticed a strange behavior in your WCF service – it would seem that WCF is late in receiving the request, as if it was entirely loaded into the memory, and then passed to WCF. So is it streamed? or is it actually buffered? well, it’s both.&lt;/p&gt;
&lt;p&gt;When you host a WCF service in IIS you also get a bit of the ASP.NET pipeline on the side, even if you don’t use the ASP.NET compatibility mode, this is documented in the &lt;a href="http://msdn.microsoft.com/en-us/library/aa702682.aspx"&gt;WCF Services and ASP.NET&lt;/a&gt; article on MSDN (look for the part about the PostAuthenticateRequest event). In .NET 4, there is a design flaw in ASP.NET which causes the requests sent to WCF to be buffered in ASP.NET. This buffering behavior causes several major side-effects:&lt;/p&gt;
&lt;p&gt;1. There is a latency between the time the streamed message is received by ASP.NET and the time the WCF service method is actually invoked.&lt;/p&gt;
&lt;p&gt;2. There is some memory consumption due to the buffering – the exact amount of memory consumed depends on the size of the message sent by the client, but it can even get to several hundred MBs if you increase the &lt;a href="http://msdn.microsoft.com/en-us/library/system.web.configuration.httpruntimesection.maxrequestlength.aspx"&gt;MaxRequestLength&lt;/a&gt; of ASP.NET, the &lt;a href="http://www.iis.net/ConfigReference/system.webServer/security/requestFiltering/requestLimits"&gt;MaxAllowedContentLength&lt;/a&gt; of IIS 7, and of course the &lt;a href="http://msdn.microsoft.com/en-us/library/system.servicemodel.wshttpbindingbase.maxreceivedmessagesize.aspx"&gt;MaxReceivedMessageSize&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/en-us/library/system.servicemodel.channels.httptransportbindingelement.maxbuffersize.aspx"&gt;MaxBufferSize&lt;/a&gt; of WCF.&lt;/p&gt;
&lt;p&gt;3. When ASP.NET buffers the request, it uses both memory and disk. The &lt;a href="http://msdn.microsoft.com/en-us/library/system.web.configuration.httpruntimesection.requestlengthdiskthreshold.aspx"&gt;requestLengthDiskThreshold&lt;/a&gt; configuration setting of ASP.NET controls when ASP.NET starts to use the disk. If you upload multiple files to WCF at once, you will start to see some delays due to multiple files being written to the disk at once. BTW, the files are written to an “upload” folder under the web application’s temporary asp.net folder (under c:\windows\Microsoft.NET\Framework\vX.X.XXXX\Temporary ASP.NET Files\) and are removed after the request is handled.&lt;/p&gt;
&lt;p&gt;To show this behavior, I have created a client application that uploads a 500MB file to a WCF service. The WCF service is hosted in IIS and is set to a streamed request (you can download the StreamingInIIS sample solution from &lt;font style="BACKGROUND-COLOR:#ffffff;"&gt;&lt;a href="https://skydrive.live.com/redir.aspx?cid=5ef5be1ab30a6056&amp;amp;resid=5EF5BE1AB30A6056!460&amp;amp;parid=5EF5BE1AB30A6056!129"&gt;here&lt;/a&gt;&lt;/font&gt;). The following output shows some information about the time it took for the service to receive and handle the request, and the consumed memory:&lt;/p&gt;
&lt;p&gt;1 Client started upload on 17/01/2012 19:03:25 &lt;br /&gt;2 Available memory before starting is: 2701MB &lt;br /&gt;3 Client finished upload on 17/01/2012 19:03:44 &lt;br /&gt;4 Available memory after finishing is: 2699MB &lt;br /&gt;5 Available memory on ASP.NET is: 2701MB &lt;br /&gt;6 ASP.NET received upload at: 17/01/2012 19:03:28 &lt;br /&gt;7 Available memory on WCF is: 2122MB &lt;br /&gt;8 WCF started receiving file at: 17/01/2012 19:03:38 &lt;br /&gt;9 WCF finished receiving file at: 17/01/2012 19:03:43 &lt;br /&gt;File size is: 524288000 &lt;br /&gt;Press any key to continue . . .&lt;/p&gt;
&lt;p&gt;Some things to note about these results:&lt;/p&gt;
&lt;p&gt;1. Client started / Client finished (line 1+3) – the &lt;strong&gt;total time&lt;/strong&gt; the client waited for the service was &lt;strong&gt;19 seconds&lt;/strong&gt;; this includes the upload time, the buffering time of ASP.NET, and the time WCF handled the received stream.&lt;/p&gt;
&lt;p&gt;2. &lt;strong&gt;ASP.NET started receiving&lt;/strong&gt; the stream &lt;strong&gt;3 seconds &lt;/strong&gt;after the client began sending it (line 6).&lt;/p&gt;
&lt;p&gt;3. &lt;strong&gt;WCF started receiving&lt;/strong&gt; the stream &lt;strong&gt;10 seconds&lt;/strong&gt; after ASP.NET received started receiving it, and a total of &lt;strong&gt;13 seconds&lt;/strong&gt; from the time the client started sending it (line 8). In total, it took WCF &lt;strong&gt;5 seconds &lt;/strong&gt;to &lt;strong&gt;read the entire stream&lt;/strong&gt; from ASP.NET (line 8+9).&lt;/p&gt;
&lt;p&gt;4. Before the client sent the message, the &lt;strong&gt;available memory&lt;/strong&gt; in the machine was &lt;strong&gt;2701MB&lt;/strong&gt;, which is also the available memory when ASP.NET first received the message. By the time WCF got the request and started handling it, the available memory was &lt;strong&gt;2122MB&lt;/strong&gt; – about &lt;strong&gt;580MB were consumed from the memory&lt;/strong&gt; for this operation (lines 2, 5, and 7).&lt;/p&gt;
&lt;p&gt;5. As for the generated temp file, here is a screenshot of the temporary ASP.NET folder content:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/idof/image_415EBE7C.png"&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="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/idof/image_thumb_451C634C.png" width="682" height="191" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: to show the ASP.NET information I used the ASP.NET compatibility mode. You can turn it off in the sample code if you want to verify that the problem also exists when we don’t use the compatibility mode (look at the difference between the time the client sent the request and the time WCF actually started handling the request – there should be a big latency).&lt;/p&gt;
&lt;p&gt;So we get that WCF 4 doesn’t handle well streamed content over IIS, but what about WCF 4.5? what has changed?&lt;/p&gt;
&lt;p&gt;In WCF 4.5 this just doesn’t happen – with .NET 4.5, ASP.NET doesn’t buffer the request, but rather forwards it directly to WCF, so we don’t get any latency, no memory consumption, and no disk usage.&lt;/p&gt;
&lt;p&gt;Want to see some proof? I ran the same demo code in Windows Server 8 with WCF 4.5 over IIS. I used a smaller file size (200MB), since this is a VM with less memory, however you can still see the difference quite clearly:&lt;/p&gt;
&lt;p&gt;1 Client started upload on 11/27/2011 7:23:18 AM &lt;br /&gt;2 Available memory before starting is: 942MB &lt;br /&gt;3 Client finished upload on 11/27/2011 7:23:46 AM &lt;br /&gt;4 Available memory after finishing is: 942MB &lt;br /&gt;5 Available memory on ASP.NET is: 941MB &lt;br /&gt;6 ASP.NET received upload at: 11/27/2011 7:23:20 AM &lt;br /&gt;7 Available memory on WCF is: 942MB &lt;br /&gt;8 WCF started receiving file at: 11/27/2011 7:23:20 AM &lt;br /&gt;9 WCF finished receiving file at: 11/27/2011 7:23:46 AM &lt;br /&gt;File size is: 209715200 &lt;br /&gt;Press any key to continue . . .&lt;/p&gt;
&lt;p&gt;First thing to note – memory consumption hasn’t changed throughout the execution – remains &lt;strong&gt;steady at ~942MB&lt;/strong&gt; (lines 2+4+5+7).&lt;/p&gt;
&lt;p&gt;As for the latency – &lt;strong&gt;WCF received the request &lt;/strong&gt;at the &lt;strong&gt;same time ASP.NET received it&lt;/strong&gt; (lines 6+8), which is &lt;strong&gt;2 seconds after the client &lt;/strong&gt;begins sending it.&lt;/p&gt;
&lt;p&gt;Oh, and since ASP.NET passed the stream directly to WCF, &lt;strong&gt;no temp file was created &lt;/strong&gt;!!&lt;/p&gt;
&lt;p&gt;So there you have it – proper streaming in WCF 4.5 over IIS.&lt;/p&gt;
&lt;p&gt;Stay tuned for more posts about the new features of WCF 4.5. You can also follow me on Twitter (@IdoFlatow) to get updates as soon as new posts are published.&lt;/p&gt;
&lt;div style="PADDING-BOTTOM:0px;MARGIN:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;PADDING-TOP:0px;" class="wlWriterHeaderFooter"&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://blogs.microsoft.co.il/blogs/idof/archive/2012/01/17/what-s-new-in-wcf-4-5-improved-streaming-in-iis-hosting.aspx"&gt;&lt;img border="0" alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://blogs.microsoft.co.il/blogs/idof/archive/2012/01/17/what-s-new-in-wcf-4-5-improved-streaming-in-iis-hosting.aspx&amp;amp;bgcolor=6600FF" /&gt;&lt;/a&gt; &lt;a href="http://dotnetshoutout.com/Submit?url=http://blogs.microsoft.co.il/blogs/idof/archive/2012/01/17/what-s-new-in-wcf-4-5-improved-streaming-in-iis-hosting.aspx"&gt;&lt;img style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;BORDER-TOP:0px;BORDER-RIGHT:0px;" alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http://blogs.microsoft.co.il/blogs/idof/archive/2012/01/17/what-s-new-in-wcf-4-5-improved-streaming-in-iis-hosting.aspx" /&gt;&lt;/a&gt; &lt;a style="DISPLAY:none;" href="http://www.codeproject.com/script/Articles/BlogFeedList.aspx?amid=2199681" rel="tag"&gt;CodeProject&lt;/a&gt; &lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=990797" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/WCF/default.aspx">WCF</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/IIS/default.aspx">IIS</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/What_2700_s+new/default.aspx">What's new</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/WCF+4.5/default.aspx">WCF 4.5</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/Streamed/default.aspx">Streamed</category><feedburner:origLink>http://blogs.microsoft.co.il/blogs/idof/archive/2012/01/17/what-s-new-in-wcf-4-5-improved-streaming-in-iis-hosting.aspx</feedburner:origLink></item><item><title>Dear blog, it’s been a while since my last post</title><link>http://feedproxy.google.com/~r/IdoFlatowsBlog/~3/BYNIA427NBU/dear-blog-it-s-been-a-while-since-my-last-post.aspx</link><pubDate>Sun, 15 Jan 2012 23:16:46 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:988921</guid><dc:creator>Ido Flatow</dc:creator><slash:comments>1</slash:comments><wfw:commentRss>http://blogs.microsoft.co.il/blogs/idof/rsscomments.aspx?PostID=988921</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/idof/archive/2012/01/16/dear-blog-it-s-been-a-while-since-my-last-post.aspx#comments</comments><description>&lt;p&gt;If you’ve been wondering where I disappeared to in the last couple of weeks, and if you are still waiting anxiously for my next post about WCF 4.5, fear not, I’m here, I’m alive, and I’m still kicking.&lt;/p&gt;  &lt;p&gt;It’s been quite a rough month, as I have been occupied knee deep in home renovations. If you’ve ever dealt with contractors, technicians, and handyman, you know the type of frustration I’m talking about.&lt;/p&gt;  &lt;p&gt;Between re-tiling my floors, replacing my kitchen cabinets, and re-painting my entire home, I also managed to find the time to deliver some courses on &lt;a href="http://www.sela.co.il/syl/Syllabus.aspx?CourseCode=AzureWS&amp;amp;CategoryID=165"&gt;Windows Azure&lt;/a&gt;, &lt;a href="http://www.sela.co.il/syl/Syllabus.aspx?CourseCode=6427A&amp;amp;CategoryID=165"&gt;IIS&lt;/a&gt;, &lt;a href="http://www.sela.co.il/syl/Syllabus.aspx?CourseCode=AdvWCF&amp;amp;CategoryID=165"&gt;Advanced WCF&lt;/a&gt;, &lt;a href="http://www.sela.co.il/syl/Syllabus.aspx?CourseCode=50291B&amp;amp;CategoryID=165"&gt;Windows HPC Server&lt;/a&gt;, AppFabric Cache, and PowerShell.&lt;/p&gt;  &lt;p&gt;2012 is going to be very productive year – this year is going to be a lot about the new releases of .NET 4.5, VS11, and Windows Server 8. I’m guessing you’ll see many more posts about the new features of &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2011/09/16/what-s-new-in-wcf-4-5-let-s-start-with-wcf-configuration.aspx"&gt;WCF 4.5&lt;/a&gt; (soon to come – a new post about the new streaming features of WCF 4.5 over IIS), .NET 4.5, and VS11.&lt;/p&gt;  &lt;p&gt;I’m also continuing my voyage with BigData solutions which I’ve started last year with my work on the &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/tags/Windows+HPC+Server+2008+R2/default.aspx"&gt;Windows HPC Server 2008 R2&lt;/a&gt;, and the new HPC labs we’ve created in Sela for the &lt;a href="http://msdn.microsoft.com/en-us/wazplatformtrainingcourse_hpcscheduler_unit"&gt;Windows Azure Platform Training Kit&lt;/a&gt;. This year is mostly going to be about Hadoop on Azure, so expect new labs and demos soon on the WAP TK (Windows Azure Platform Training Kit).&lt;/p&gt;  &lt;p&gt;This year I will continue to manage the Israeli Web Developer Community (WDCIL) along with &lt;a href="http://il.linkedin.com/pub/gal-kogman/9/853/220"&gt;Gal Kogman&lt;/a&gt;, and in a couple of days I will also start to moderate the WebDev IL MSDN forum with &lt;a href="http://blogs.microsoft.co.il/blogs/shlomo/"&gt;Sholomo Goldberg&lt;/a&gt;, AKA the DotNet Rabbi.&lt;/p&gt;  &lt;p&gt;I’m also continuing my speaking engagements this year, which ended last year with my sessions at &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2011/10/20/my-mvc-jquery-razor-nuget-iis-express-session-at-vs-live-2011-redmond.aspx"&gt;VSLive Redmond&lt;/a&gt; and MCT Summit in October and &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2011/12/07/slide-decks-and-demo-code-from-my-visual-studio-live-2011-orlando-sessions.aspx"&gt;VSLive Orlando&lt;/a&gt; in December. Other than my usual appearances at Sela’s SDP conferences in Israel, I will also be speaking this April in the &lt;a href="http://www.developermarch.com/developersummit/speakers.html#IdoFlatow"&gt;Great Indian Developer Summit&lt;/a&gt; (GIDS) in Bangalore (India of course), and hopefully in additional conferences in Europe and the US (more information to come in the next couple of weeks).&lt;/p&gt;  &lt;p&gt;So check out for my &lt;a href="http://blogs.microsoft.co.il/blogs/idof/"&gt;posts&lt;/a&gt;, my &lt;a href="http://twitter.com/idoflatow"&gt;tweets&lt;/a&gt;, my courses, and my &lt;a href="http://speakermix.com/ido-flatow"&gt;speaking&lt;/a&gt; engagements, and don’t forget – if you need me, just turn on the bat signal, and I’ll come to your rescue, just kidding – you can always contact me through my blog, my tweeter account, or send me an email, and I’ll do my best to answer you promptly.&lt;/p&gt;  &lt;p&gt;Happy new year to y’all, enjoy the new leap year, and hopefully we’ll &lt;a href="http://en.wikipedia.org/wiki/2012_phenomenon"&gt;still be here&lt;/a&gt; to see 2013.&lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="margin:0px;padding:0px 0px 0px 0px;"&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://blogs.microsoft.co.il/blogs/idof/archive/2012/01/16/dear-blog-it-s-been-a-while-since-my-last-post.aspx"&gt;&lt;img border="0" alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://blogs.microsoft.co.il/blogs/idof/archive/2012/01/16/dear-blog-it-s-been-a-while-since-my-last-post.aspx&amp;amp;bgcolor=6600FF" /&gt;&lt;/a&gt; &lt;a href="http://dotnetshoutout.com/Submit?url=http://blogs.microsoft.co.il/blogs/idof/archive/2012/01/16/dear-blog-it-s-been-a-while-since-my-last-post.aspx"&gt;&lt;img alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http://blogs.microsoft.co.il/blogs/idof/archive/2012/01/16/dear-blog-it-s-been-a-while-since-my-last-post.aspx" style="border:0px;" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=988921" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/WCF/default.aspx">WCF</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/IIS/default.aspx">IIS</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/Courses/default.aspx">Courses</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/Azure/default.aspx">Azure</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/HPC/default.aspx">HPC</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/Visual+Studio+Live_2100_+2011/default.aspx">Visual Studio Live! 2011</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/Windows+HPC+Server+2008+R2/default.aspx">Windows HPC Server 2008 R2</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/speakers/default.aspx">speakers</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/WCF+4.5/default.aspx">WCF 4.5</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/Visual+Studio+11/default.aspx">Visual Studio 11</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/MCT+Summit/default.aspx">MCT Summit</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/WDCIL/default.aspx">WDCIL</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/engagements/default.aspx">engagements</category><feedburner:origLink>http://blogs.microsoft.co.il/blogs/idof/archive/2012/01/16/dear-blog-it-s-been-a-while-since-my-last-post.aspx</feedburner:origLink></item><item><title>Slide decks and demo code from my Visual Studio Live 2011 (Orlando) sessions</title><link>http://feedproxy.google.com/~r/IdoFlatowsBlog/~3/ihbRAE8urB0/slide-decks-and-demo-code-from-my-visual-studio-live-2011-orlando-sessions.aspx</link><pubDate>Wed, 07 Dec 2011 21:22:28 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:950730</guid><dc:creator>Ido Flatow</dc:creator><slash:comments>4</slash:comments><wfw:commentRss>http://blogs.microsoft.co.il/blogs/idof/rsscomments.aspx?PostID=950730</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/idof/archive/2011/12/07/slide-decks-and-demo-code-from-my-visual-studio-live-2011-orlando-sessions.aspx#comments</comments><description>&lt;p&gt;Yesterday I had two session in VS Live, one about the new features of WCF 4, and the other about the new way to develop web applications using ASP.NET MVC, the Razor view engine, jQuery, and IIS 7.5 Express.&lt;/p&gt;  &lt;p&gt;The slide decks and demo code for both sessions can be downloaded from here: &lt;a href="http://bit.ly/vslive-2011-orlando"&gt;http://bit.ly/vslive-2011-orlando&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I really enjoyed delivering both sessions, and congratulations to all the people that won &lt;a href="http://www.youtube.com/watch?v=UbdRmLaHMeY"&gt;Angry Bird balls&lt;/a&gt; for answering my questions, and for asking tough questions.&lt;/p&gt;  &lt;p&gt;Hopefully we will meet in next year’s VSLive (if my sessions are picked up again).&lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="margin:0px;padding:0px 0px 0px 0px;"&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://blogs.microsoft.co.il/blogs/idof/archive/2011/12/07/slide-decks-and-demo-code-from-my-visual-studio-live-2011-orlando-sessions.aspx"&gt;&lt;img border="0" alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://blogs.microsoft.co.il/blogs/idof/archive/2011/12/07/slide-decks-and-demo-code-from-my-visual-studio-live-2011-orlando-sessions.aspx&amp;amp;bgcolor=6600FF" /&gt;&lt;/a&gt; &lt;a href="http://dotnetshoutout.com/Submit?url=http://blogs.microsoft.co.il/blogs/idof/archive/2011/12/07/slide-decks-and-demo-code-from-my-visual-studio-live-2011-orlando-sessions.aspx"&gt;&lt;img alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http://blogs.microsoft.co.il/blogs/idof/archive/2011/12/07/slide-decks-and-demo-code-from-my-visual-studio-live-2011-orlando-sessions.aspx" style="border:0px;" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=950730" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/WCF/default.aspx">WCF</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/Presentation/default.aspx">Presentation</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/ASP.NET+MVC+3/default.aspx">ASP.NET MVC 3</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/Visual+Studio+Live_2100_+2011/default.aspx">Visual Studio Live! 2011</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/VS+Live/default.aspx">VS Live</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/razor/default.aspx">razor</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/jquery/default.aspx">jquery</category><feedburner:origLink>http://blogs.microsoft.co.il/blogs/idof/archive/2011/12/07/slide-decks-and-demo-code-from-my-visual-studio-live-2011-orlando-sessions.aspx</feedburner:origLink></item><item><title>Creating your own (customized) standard endpoints in WCF 4</title><link>http://feedproxy.google.com/~r/IdoFlatowsBlog/~3/RlLelkShy9I/creating-your-own-customized-standard-endpoints-in-wcf-4.aspx</link><pubDate>Wed, 07 Dec 2011 21:10:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:950722</guid><dc:creator>Ido Flatow</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.microsoft.co.il/blogs/idof/rsscomments.aspx?PostID=950722</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/idof/archive/2011/12/07/creating-your-own-customized-standard-endpoints-in-wcf-4.aspx#comments</comments><description>&lt;p&gt;Lately I’ve been writing and speaking a lot about WCF 4.5, but while delivering my “What’s new in WCF 4” session in &lt;a href="http://vslive.com/events/orlando-2011/home.aspx"&gt;Visual Studio Live&lt;/a&gt; yesterday I realized that there is one feature of WCF 4 that most people are not aware of, and do not really understand how useful it is – Standard Endpoints.&lt;/p&gt;
&lt;p&gt;In WCF we always have to specify a set of address+binding+contract (ABC) for our endpoints. If our endpoints also need to be configured, for example – change the binding configuration, or the endpoint behavior, then we need to add some more configuration. We can use default configuration (another feature of WCF 4), but if we have two common settings, we cannot set two defaults and we’re back to square one.&lt;/p&gt;
&lt;p&gt;Standard endpoints change the way we define endpoints – with standard endpoints we specify a special “kind” name in our endpoint, which automatically sets our endpoint’s address, binding, contract, binding configuration, and endpoint behavior.&lt;/p&gt;
&lt;p&gt;For example – if we define the following endpoint:&lt;/p&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;endpoint&lt;/span&gt; &lt;span class="attr"&gt;address&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;mex&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;kind&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;mexEndpoint&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;The above endpoint will automatically be set with the &lt;strong&gt;mexHttpBinding&lt;/strong&gt; and the &lt;strong&gt;IMetadataExchange&lt;/strong&gt; contract.&lt;/p&gt;
&lt;p&gt;If we define the following endpoints:&lt;/p&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;endpoint&lt;/span&gt; &lt;span class="attr"&gt;address&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;web&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;kind&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;webHttpEndpoint&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;contract&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;MyNS.IMyContract&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;We will get an endpoint which uses &lt;strong&gt;webHttpBinding&lt;/strong&gt;, and automatically gets the &lt;strong&gt;webHttp&lt;/strong&gt; endpoint behavior.&lt;/p&gt;
&lt;p&gt;Although this is quite nice, this is the least we can do with standard endpoints. The real use of standard endpoints is when you create some of your own.&lt;/p&gt;
&lt;p&gt;Image the following – you are a part of an infrastructure team in your organization and you need to explain to the dev teams which endpoint configuration they should use in their projects – “Please use &lt;strong&gt;NetTcp &lt;/strong&gt;binding, with &lt;strong&gt;increased message size limits&lt;/strong&gt;, with either &lt;strong&gt;security none or transport&lt;/strong&gt;, and don’t forget to &lt;strong&gt;increase the send timeout”&lt;/strong&gt;. &lt;/p&gt;
&lt;p&gt;One way to do this is to send a memo to all the dev teams, hoping everyone follow your instructions to the letter. Another way you can do that is to create your own standard endpoint with all of the above configuration and just send it to the dev teams to use.&lt;/p&gt;
&lt;p&gt;First of all you need to create your custom endpoint:&lt;/p&gt;
&lt;div class="csharpcode"&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; CompanyNameStandardEndpoint : ServiceEndpoint&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;{&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; _isSecured;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; CompanyNameStandardEndpoint(ContractDescription contract)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;        : &lt;span class="kwrd"&gt;base&lt;/span&gt;(contract)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;    {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;        &lt;span class="kwrd"&gt;this&lt;/span&gt;.Binding = &lt;span class="kwrd"&gt;new&lt;/span&gt; NetTcpBinding();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;        ResetBindingConfiguration(&lt;span class="kwrd"&gt;this&lt;/span&gt;.Binding);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;        &lt;span class="kwrd"&gt;this&lt;/span&gt;.IsSystemEndpoint = &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;    }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; IsSecured&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;    {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;        get&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; _isSecured;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;        }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;        set&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;            _isSecured = &lt;span class="kwrd"&gt;value&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (_isSecured)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;            {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;                (&lt;span class="kwrd"&gt;this&lt;/span&gt;.Binding &lt;span class="kwrd"&gt;as&lt;/span&gt; NetTcpBinding).Security.Mode = SecurityMode.Transport;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;            }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;            &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;            {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;                (&lt;span class="kwrd"&gt;this&lt;/span&gt;.Binding &lt;span class="kwrd"&gt;as&lt;/span&gt; NetTcpBinding).Security.Mode = SecurityMode.None;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;            }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;        }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt;    }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  33:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  34:  &lt;/span&gt;    &lt;span class="rem"&gt;// Receive a dynamic object instead of creating separate methods&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  35:  &lt;/span&gt;    &lt;span class="rem"&gt;// for netTcp, basicHttp, WSHttpBinding...&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  36:  &lt;/span&gt;    &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; ResetBindingConfiguration(dynamic binding)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  37:  &lt;/span&gt;    {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  38:  &lt;/span&gt;        binding.SendTimeout = TimeSpan.FromMinutes(5);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  39:  &lt;/span&gt;        binding.MaxReceivedMessageSize = Int32.MaxValue;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  40:  &lt;/span&gt;        binding.MaxBufferSize = Int32.MaxValue;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  41:  &lt;/span&gt;    }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  42:  &lt;/span&gt;}&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Line 8 makes sure that your endpoint will use NetTcp binding.&lt;/p&gt;
&lt;p&gt;Line 9 will call a method that initializes the binding settings (lines 36-41).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note &lt;/strong&gt;: the &lt;strong&gt;ResetBindingConfiguration &lt;/strong&gt;method receives a dynamic object because for some reason some of the binding properties such as the &lt;strong&gt;MaxReceivedMessageSize &lt;/strong&gt;and the &lt;strong&gt;MaxBufferSize &lt;/strong&gt;are defined in each of the bindings instead of being defined in a base Binding class. The dynamic will allow us to change our code later on to support both TCP and HTTP bindings without duplicating our method for overloads.&lt;/p&gt;
&lt;p&gt;Line 10 specifies that this is a user-defined endpoint and not a system endpoint.&lt;/p&gt;
&lt;p&gt;Lines 13-32 are responsible of handling the user’s selection to whether the endpoint is secured or not by changing the security mode to either &lt;strong&gt;Transport &lt;/strong&gt;or &lt;strong&gt;None&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;So now we have a new standard endpoint that initializes the binding to &lt;strong&gt;NetTcpBinding&lt;/strong&gt;, sets the timeout and message size, and knows to set the security according to the user’s selection. We can now add this endpoint in code to our service by calling the following code:&lt;/p&gt;
&lt;div class="csharpcode"&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;CompanyNameStandardEndpoint newEndpoint = &lt;span class="kwrd"&gt;new&lt;/span&gt; CompanyNameStandardEndpoint(&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;        ContractDescription.GetContract(&lt;span class="kwrd"&gt;typeof&lt;/span&gt;(IService1)));&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;newEndpoint.IsSecured = &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;newEndpoint.Address = &lt;span class="kwrd"&gt;new&lt;/span&gt; EndpointAddress(tcpBaseAddress + &lt;span class="str"&gt;&amp;quot;companyUnsecured&amp;quot;&lt;/span&gt;);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;host.AddServiceEndpoint(newEndpoint);            &lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;To be able to add this endpoint configuration in the config file, you will need to add some boilerplate code:&lt;/p&gt;
&lt;div class="csharpcode"&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; CompanyNameStandardEndpointCollectionElement :&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;    StandardEndpointCollectionElement&amp;lt;CompanyNameStandardEndpoint, CompanyNameStandardEndpointElement&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;{&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;}&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; CompanyNameStandardEndpointElement : StandardEndpointElement&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;{&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;    &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; ServiceEndpoint CreateServiceEndpoint(ContractDescription contractDescription)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;    {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;        &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; CompanyNameStandardEndpoint(contractDescription);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;    }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; IsSecured&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;    {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;        get { &lt;span class="kwrd"&gt;return&lt;/span&gt; (&lt;span class="kwrd"&gt;bool&lt;/span&gt;)&lt;span class="kwrd"&gt;base&lt;/span&gt;[&lt;span class="str"&gt;&amp;quot;isSecured&amp;quot;&lt;/span&gt;]; }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;        set { &lt;span class="kwrd"&gt;base&lt;/span&gt;[&lt;span class="str"&gt;&amp;quot;isSecured&amp;quot;&lt;/span&gt;] = &lt;span class="kwrd"&gt;value&lt;/span&gt;; }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;    }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;    &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; ConfigurationPropertyCollection Properties&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;    {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;        get&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;            ConfigurationPropertyCollection properties = &lt;span class="kwrd"&gt;base&lt;/span&gt;.Properties;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;            properties.Add(&lt;span class="kwrd"&gt;new&lt;/span&gt; ConfigurationProperty(&lt;span class="str"&gt;&amp;quot;isSecured&amp;quot;&lt;/span&gt;, &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(&lt;span class="kwrd"&gt;bool&lt;/span&gt;), &lt;span class="kwrd"&gt;false&lt;/span&gt;, ConfigurationPropertyOptions.None));&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; properties;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;        }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;    }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;    &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; Type EndpointType&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;    {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;        get { &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(CompanyNameStandardEndpoint); }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt;    }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  33:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  34:  &lt;/span&gt;    &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; OnApplyConfiguration(ServiceEndpoint endpoint, ServiceEndpointElement serviceEndpointElement)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  35:  &lt;/span&gt;    {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  36:  &lt;/span&gt;        CompanyNameStandardEndpoint customEndpoint = (CompanyNameStandardEndpoint)endpoint;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  37:  &lt;/span&gt;        customEndpoint.IsSecured = &lt;span class="kwrd"&gt;this&lt;/span&gt;.IsSecured;            &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  38:  &lt;/span&gt;    }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  39:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  40:  &lt;/span&gt;    &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; OnApplyConfiguration(ServiceEndpoint endpoint, ChannelEndpointElement channelEndpointElement)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  41:  &lt;/span&gt;    {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  42:  &lt;/span&gt;        CompanyNameStandardEndpoint customEndpoint = (CompanyNameStandardEndpoint)endpoint;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  43:  &lt;/span&gt;        customEndpoint.IsSecured = &lt;span class="kwrd"&gt;this&lt;/span&gt;.IsSecured;            &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  44:  &lt;/span&gt;    }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  45:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  46:  &lt;/span&gt;    &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; OnInitializeAndValidate(ServiceEndpointElement serviceEndpointElement)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  47:  &lt;/span&gt;    {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  48:  &lt;/span&gt;            &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  49:  &lt;/span&gt;    }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  50:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  51:  &lt;/span&gt;    &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; OnInitializeAndValidate(ChannelEndpointElement channelEndpointElement)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  52:  &lt;/span&gt;    {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  53:  &lt;/span&gt;           &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  54:  &lt;/span&gt;    }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  55:  &lt;/span&gt;}&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;The above code is a basic configuration element code. The most important part is lines&amp;nbsp; 13-17 in which you need to repeat each of the properties you created in the custom standard element (for a mapping between XML and CLR) and line 24 where you add all the properties that can be set in the configuration file, so the configuration can be validated. &lt;/p&gt;
&lt;p&gt;Once you create the above code, you need just on more step to use the new endpoint kind in your configuration – you need to tell WCF that you have a new service endpoint. To do that you add the following XML in your &amp;lt;system.serviceModel&amp;gt; section:&lt;/p&gt;
&lt;div class="csharpcode"&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;extensions&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;endpointExtensions&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;add&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;      &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;companyNameEndpoint&amp;quot;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;      &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;TestWcfStandardEndpoints.CompanyNameStandardEndpointCollectionElement, TestWcfStandardEndpoints&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;endpointExtensions&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;extensions&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Note: On MSDN you can find a good explanation on &lt;a href="http://msdn.microsoft.com/en-us/library/ee358762.aspx"&gt;standard endpoints&lt;/a&gt;, but the extensions configuration part is incorrect, the above configuration is the correct one (the correct element in the &amp;lt;extensions&amp;gt; is &lt;strong&gt;&amp;lt;endpointExtensions&amp;gt;&lt;/strong&gt; and not &lt;strong&gt;&amp;lt;standardEndpointExtensions&amp;gt;&lt;/strong&gt; as it appears in the article).&lt;/p&gt;
&lt;p&gt;Now you are ready to declare your new endpoints and configure them:&lt;/p&gt;
&lt;div class="csharpcode"&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;services&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;service&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;TestWcfStandardEndpoints.Service1&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;endpoint&lt;/span&gt; &lt;span class="attr"&gt;binding&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;basicHttpBinding&amp;quot;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;            &lt;span class="attr"&gt;contract&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;TestWcfStandardEndpoints.IService1&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;endpoint&lt;/span&gt; &lt;span class="attr"&gt;address&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;mex&amp;quot;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;            &lt;span class="attr"&gt;kind&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;mexEndpoint&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;endpoint&lt;/span&gt; &lt;span class="attr"&gt;address&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;companySecured&amp;quot;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;            &lt;span class="attr"&gt;kind&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;companyNameEndpoint&amp;quot;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;            &lt;span class="attr"&gt;endpointConfiguration&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;securedEndpoint&amp;quot;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;            &lt;span class="attr"&gt;contract&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;TestWcfStandardEndpoints.IService1&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;service&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;services&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;standardEndpoints&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;companyNameEndpoint&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;standardEndpoint&lt;/span&gt; &lt;span class="attr"&gt;isSecured&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;true&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;securedEndpoint&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;companyNameEndpoint&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;standardEndpoints&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;In lines 7-10 we define the endpoint with the new “kind” (line 9) and specify where we configure the rest of the endpoint (line 10).&lt;/p&gt;
&lt;p&gt;Lines 14-18 contains the configuration of the standard endpoint which we created.&lt;/p&gt;
&lt;p&gt;So to conclude, standard endpoints are an easy way to create fully-configured endpoints with binding configuration, contract settings, and endpoint behaviors. It’s mostly useful when wanting to create the same endpoint over and over again in multiple projects (which happens in 99.99% of the time).&lt;/p&gt;
&lt;p&gt;Don’t bother copy pasting all the above code – you can just download the complete solution from &lt;a href="https://skydrive.live.com/redir.aspx?cid=5ef5be1ab30a6056&amp;amp;resid=5EF5BE1AB30A6056!458&amp;amp;parid=root"&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;div style="PADDING-BOTTOM:0px;MARGIN:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;PADDING-TOP:0px;" class="wlWriterHeaderFooter"&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://blogs.microsoft.co.il/blogs/idof/archive/2011/12/07/creating-your-own-customized-standard-endpoints-in-wcf-4.aspx"&gt;&lt;img border="0" alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://blogs.microsoft.co.il/blogs/idof/archive/2011/12/07/creating-your-own-customized-standard-endpoints-in-wcf-4.aspx&amp;amp;bgcolor=6600FF" /&gt;&lt;/a&gt; &lt;a href="http://dotnetshoutout.com/Submit?url=http://blogs.microsoft.co.il/blogs/idof/archive/2011/12/07/creating-your-own-customized-standard-endpoints-in-wcf-4.aspx"&gt;&lt;img style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;BORDER-TOP:0px;BORDER-RIGHT:0px;" alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http://blogs.microsoft.co.il/blogs/idof/archive/2011/12/07/creating-your-own-customized-standard-endpoints-in-wcf-4.aspx" /&gt;&lt;/a&gt; &lt;a style="DISPLAY:none;" href="http://www.codeproject.com/script/Articles/BlogFeedList.aspx?amid=2199681" rel="tag"&gt;CodeProject&lt;/a&gt; &lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=950722" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/WCF/default.aspx">WCF</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/standard+endpoint/default.aspx">standard endpoint</category><feedburner:origLink>http://blogs.microsoft.co.il/blogs/idof/archive/2011/12/07/creating-your-own-customized-standard-endpoints-in-wcf-4.aspx</feedburner:origLink></item><item><title>Slide decks and sample code from my WCF 4.5 open-house in Microsoft</title><link>http://feedproxy.google.com/~r/IdoFlatowsBlog/~3/e2Qn7-Ffuog/slide-decks-and-sample-code-from-my-wcf-4-5-open-house-in-microsoft.aspx</link><pubDate>Sun, 27 Nov 2011 22:35:39 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:942316</guid><dc:creator>Ido Flatow</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.microsoft.co.il/blogs/idof/rsscomments.aspx?PostID=942316</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/idof/archive/2011/11/28/slide-decks-and-sample-code-from-my-wcf-4-5-open-house-in-microsoft.aspx#comments</comments><description>&lt;p&gt;Today I delivered a half-day talk about WCF on the following subjects:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;strong&gt;The new features of WCF 4.5       &lt;br /&gt;&lt;/strong&gt;We talked about configuration simplicity, WebSocket and UDP support, streaming fixes for IIS, binary compression, and more.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Monitoring and troubleshooting WCF services (WCF 3.5/4/4.5)       &lt;br /&gt;&lt;/strong&gt;We talked about performance counters, ETW, WMI, AppFabric, sniffing tools, tracing and message logging, instancing, concurrency, load tests and more.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;According to the events website at &lt;a href="http://events.microsoft.com"&gt;http://events.microsoft.com&lt;/a&gt;, it looks like this was the first Microsoft event worldwide about WCF 4.5. We like new technologies in Israel &lt;img style="border-bottom-style:none;border-left-style:none;border-top-style:none;border-right-style:none;" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://blogs.microsoft.co.il/blogs/idof/wlEmoticon-smile_697E2F33.png" /&gt;.&lt;/p&gt;  &lt;p&gt;We had a full-house (~100 people), got a lot of questions from people during and after the session, so it was lots of fun. I really enjoyed delivering the session, and I hope that in the coming year we will be able to see the RTM of Visual Studio 11 and .NET 4.5.&lt;/p&gt;  &lt;p&gt;If you missed today’s session, you have another chance to hear me talk about WCF 4.5 in the November meeting of the Web Developers Community (WDCIL) this Tuesday in Microsoft Raanana. You can get more information and register to the event at &lt;a title="http://wdcil2011nov.eventbrite.com" href="http://wdcil2011nov.eventbrite.com"&gt;http://wdcil2011nov.eventbrite.com&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;In the meanwhile, you can &lt;strong&gt;download &lt;/strong&gt;the presentation and the sample code I’ve shown from my SkyDrive at &lt;a href="http://bit.ly/wcf45msdn"&gt;http://bit.ly/wcf45msdn&lt;/a&gt; – this also includes the WCF 4.5 demos I showed, so don’t forget to install VS 11 and .NET 4.5 (&lt;a href="http://reddevnews.com/blogs/rdn-express/2011/11/back-to-app-migrations-with-ms-net-vnext.aspx"&gt;preferably&lt;/a&gt; on a VM).&lt;/p&gt;  &lt;p&gt;I want to repeat what I told people in the event today – the WCF team is eager to know what you think about WCF, what is missing in WCF to make your work easier, and if you encountered any bugs in the product. There are several ways by which you can contact them:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;For WCF 4.5&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Visit the .NET 4.5 forum at: &lt;a title="http://forums.asp.net/1239.aspx/1?ASP+NET+4+5+ASP+NET+WCF+and+Visual+Studio+11+Developer+Previews" href="http://forums.asp.net/1239.aspx/1?ASP+NET+4+5+ASP+NET+WCF+and+Visual+Studio+11+Developer+Previews"&gt;http://forums.asp.net/1239.aspx/1?ASP+NET+4+5+ASP+NET+WCF+and+Visual+Studio+11+Developer+Previews&lt;/a&gt;&lt;/li&gt;      &lt;li&gt;Report an issue, feedback, or bugs on Microsoft Connect: &lt;a href="https://connect.microsoft.com/VisualStudio"&gt;https://connect.microsoft.com/VisualStudio&lt;/a&gt;&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;For WCF 4&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Visit the WCF forum at: &lt;a title="http://social.msdn.microsoft.com/Forums/en/wcf" href="http://social.msdn.microsoft.com/Forums/en/wcf"&gt;http://social.msdn.microsoft.com/Forums/en/wcf&lt;/a&gt;&lt;/li&gt;      &lt;li&gt; Report an issue, feedback, or bugs on Microsoft Connect: &lt;a title="https://connect.microsoft.com/wcf" href="https://connect.microsoft.com/wcf"&gt;https://connect.microsoft.com/wcf&lt;/a&gt;&lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;p&gt;If you want to read more about WCF 4.5, check out previous posts I published. I will publish new in-depth posts on the new features, so stay tuned. You can also follow me on Twitter @IdoFlatow&lt;/p&gt;  &lt;p&gt;1. &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2011/09/16/what-s-new-in-wcf-4-5-let-s-start-with-wcf-configuration.aspx"&gt;What’s new in WCF 4.5? let’s start with WCF configuration&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;2. &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2011/09/17/what-s-new-in-wcf-4-5-a-single-wsdl-file.aspx"&gt;What’s new in WCF 4.5? a single WSDL file&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;3. &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2011/09/19/what-s-new-in-wcf-4-5-configuration-tooltips-and-intellisense-in-config-files.aspx"&gt;What’s new in WCF 4.5? Configuration tooltips and intellisense in config files&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;4. &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2011/09/25/what-s-new-in-wcf-4-5-configuration-validations.aspx"&gt;What’s new in WCF 4.5? Configuration validations&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;5. &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2011/09/25/what-s-new-in-wcf-4-5-multiple-authentication-support-on-a-single-endpoint-in-iis.aspx"&gt;What’s new in WCF 4.5? Multiple authentication support on a single endpoint in IIS&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;6. &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2011/10/05/what-s-new-in-wcf-4-5-automatic-https-endpoint-for-iis.aspx"&gt;What’s new in WCF 4.5? Automatic HTTPS endpoint for IIS&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;7. &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2011/10/10/what-s-new-in-wcf-4-5-basichttpsbinding.aspx"&gt;What’s new in WCF 4.5? BasicHttpsBinding&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;8. &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2011/10/31/what-s-new-in-wcf-4-5-changed-default-for-asp-net-compatibility-mode.aspx"&gt;What’s new in WCF 4.5? Changed default for ASP.NET compatibility mode&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;If you want to learn more about WCF, check out the following WCF sessions we have at &lt;a href="http://www.sela.co.il/s/SDP/Dec2011/index.html"&gt;Sela’s DevDays&lt;/a&gt; next week:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;WCF Crash Course - &lt;a href="http://www.sela.co.il/s/SDP/Dec2011/tutorials2.html#d53"&gt;http://www.sela.co.il/s/SDP/Dec2011/tutorials2.html#d53&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Advanced WCF - &lt;a href="http://www.sela.co.il/s/SDP/Dec2011/tutorials2.html#d63"&gt;http://www.sela.co.il/s/SDP/Dec2011/tutorials2.html#d63&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;div class="wlWriterHeaderFooter" style="margin:0px;padding:0px 0px 0px 0px;"&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://blogs.microsoft.co.il/blogs/idof/archive/2011/11/28/slide-decks-and-sample-code-from-my-wcf-4-5-open-house-in-microsoft.aspx"&gt;&lt;img border="0" alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://blogs.microsoft.co.il/blogs/idof/archive/2011/11/28/slide-decks-and-sample-code-from-my-wcf-4-5-open-house-in-microsoft.aspx&amp;amp;bgcolor=6600FF" /&gt;&lt;/a&gt; &lt;a href="http://dotnetshoutout.com/Submit?url=http://blogs.microsoft.co.il/blogs/idof/archive/2011/11/28/slide-decks-and-sample-code-from-my-wcf-4-5-open-house-in-microsoft.aspx"&gt;&lt;img alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http://blogs.microsoft.co.il/blogs/idof/archive/2011/11/28/slide-decks-and-sample-code-from-my-wcf-4-5-open-house-in-microsoft.aspx" style="border:0px;" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=942316" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/WCF/default.aspx">WCF</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/open+house/default.aspx">open house</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/What_2700_s+new/default.aspx">What's new</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/monitoring/default.aspx">monitoring</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/WCF+4.5/default.aspx">WCF 4.5</category><feedburner:origLink>http://blogs.microsoft.co.il/blogs/idof/archive/2011/11/28/slide-decks-and-sample-code-from-my-wcf-4-5-open-house-in-microsoft.aspx</feedburner:origLink></item><item><title>WDCIL Call for Speakers</title><link>http://feedproxy.google.com/~r/IdoFlatowsBlog/~3/25XfMaDQOkQ/wdcil-call-for-speakers.aspx</link><pubDate>Mon, 31 Oct 2011 21:17:34 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:923623</guid><dc:creator>Ido Flatow</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.microsoft.co.il/blogs/idof/rsscomments.aspx?PostID=923623</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/idof/archive/2011/10/31/wdcil-call-for-speakers.aspx#comments</comments><description>&lt;p&gt;If you are not familiar with our user group, the Israeli WDC user group is a meeting place for web developers, designers, and architects, where we discuss new and existing web technologies, best practices in web development, and any other interesting stuff that relates to the web world. The user group is managed by &lt;a href="http://www.linkedin.com/pub/gal-kogman/9/853/220"&gt;Gal Kogman&lt;/a&gt; and yours truly, with the support of Microsoft Israel.&lt;/p&gt;  &lt;p&gt;This is just a short list of things we talked about in previous meetings:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;ASP.NET MVC&lt;/li&gt;    &lt;li&gt;Win8, HTML5, and JS libraries&lt;/li&gt;    &lt;li&gt;jQuery mobile framework&lt;/li&gt;    &lt;li&gt;Beyond Visual Studio 2010 – Lightswitch, NuGet, IIS Express …&lt;/li&gt;    &lt;li&gt;Javascript and jQuery tricks&lt;/li&gt;    &lt;li&gt;Facebook for developers&lt;/li&gt;    &lt;li&gt;Rich application for the browser – EF, WCF, Ajax, and jQuery&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;You can read more about the user group on our Microsoft &lt;a href="http://www.microsoft.com/israel/communities/usergroups/wdc.mspx"&gt;page&lt;/a&gt; (a bit outdated), and for the latest news and information, I suggest you visit our Facebook &lt;a href="http://www.facebook.com/wdcil"&gt;page&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;So what’s the purpose of this post, you ask? I’m writing this post to let you know that we are always looking for potential speakers - the field of web development is very vast, and many of us deal with all sorts of web technologies and techniques, so if you think you have worked with a special technology you want to share with the community by presenting it in one of the meetings, please let me know by email or by writing in our Facebook wall. You don’t need to be an experienced speaker to present at the meetings, just make sure you don’t have stage freight beforehand &lt;img alt="Smile" src="http://blogs.microsoft.co.il/blogs/idof/wlEmoticon-smile_66FF140D.png" /&gt;.&lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="margin:0px;padding:0px 0px 0px 0px;"&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://blogs.microsoft.co.il/blogs/idof/archive/2011/10/31/wdcil-call-for-speakers.aspx"&gt;&lt;img border="0" alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://blogs.microsoft.co.il/blogs/idof/archive/2011/10/31/wdcil-call-for-speakers.aspx&amp;amp;bgcolor=6600FF" /&gt;&lt;/a&gt; &lt;a href="http://dotnetshoutout.com/Submit?url=http://blogs.microsoft.co.il/blogs/idof/archive/2011/10/31/wdcil-call-for-speakers.aspx"&gt;&lt;img alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http://blogs.microsoft.co.il/blogs/idof/archive/2011/10/31/wdcil-call-for-speakers.aspx" style="border:0px;" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=923623" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/WDC/default.aspx">WDC</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/WDCIL/default.aspx">WDCIL</category><feedburner:origLink>http://blogs.microsoft.co.il/blogs/idof/archive/2011/10/31/wdcil-call-for-speakers.aspx</feedburner:origLink></item><item><title>What’s new in WCF 4.5? Changed default for ASP.NET compatibility mode</title><link>http://feedproxy.google.com/~r/IdoFlatowsBlog/~3/EmnYizbkmr0/what-s-new-in-wcf-4-5-changed-default-for-asp-net-compatibility-mode.aspx</link><pubDate>Mon, 31 Oct 2011 09:46:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:923278</guid><dc:creator>Ido Flatow</dc:creator><slash:comments>3</slash:comments><wfw:commentRss>http://blogs.microsoft.co.il/blogs/idof/rsscomments.aspx?PostID=923278</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/idof/archive/2011/10/31/what-s-new-in-wcf-4-5-changed-default-for-asp-net-compatibility-mode.aspx#comments</comments><description>&lt;p&gt;This is the eighth post in the WCF 4.5 series. This post continues the previous posts on web-hosting features. This post is about the ASP.NET compatibility mode default change of WCF 4.5.&lt;/p&gt;
&lt;p&gt;Previous posts:&lt;/p&gt;
&lt;p&gt;1. &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2011/09/16/what-s-new-in-wcf-4-5-let-s-start-with-wcf-configuration.aspx"&gt;What’s new in WCF 4.5? let’s start with WCF configuration&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;2. &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2011/09/17/what-s-new-in-wcf-4-5-a-single-wsdl-file.aspx"&gt;What’s new in WCF 4.5? a single WSDL file&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;3. &lt;a title="What’s new in WCF 4.5- Configuration tooltips and intellisense in config files" href="http://blogs.microsoft.co.il/blogs/idof/archive/2011/09/19/what-s-new-in-wcf-4-5-configuration-tooltips-and-intellisense-in-config-files.aspx"&gt;What’s new in WCF 4.5? Configuration tooltips and intellisense in config files&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;4. &lt;font style="BACKGROUND-COLOR:#ffffff;"&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2011/09/25/what-s-new-in-wcf-4-5-configuration-validations.aspx"&gt;What’s new in WCF 4.5? Configuration validations&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;5. &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2011/09/25/what-s-new-in-wcf-4-5-multiple-authentication-support-on-a-single-endpoint-in-iis.aspx"&gt;What’s new in WCF 4.5? Multiple authentication support on a single endpoint in IIS&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;6. &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2011/10/05/what-s-new-in-wcf-4-5-automatic-https-endpoint-for-iis.aspx"&gt;What’s new in WCF 4.5? Automatic HTTPS endpoint for IIS&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;7. &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2011/10/10/what-s-new-in-wcf-4-5-basichttpsbinding.aspx"&gt;What’s new in WCF 4.5? BasicHttpsBinding&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Normally, a WCF service hosted under IIS works side-by-side with ASP.NET – they share some of the pipeline, they have the same application domain, but work quite independently of each other when it comes to the HTTP context (authorization, context, session, etc…). &lt;strong&gt;This is the default behavior of WCF.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;However, you can change the default behavior of WCF and set it to ASP.NET compatibility mode – this allows WCF and ASP.NET to share most of the pipeline, and have the same HTTP context. This has some advantages and some disadvantages (such as the &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2010/09/27/asp-net-compatible-wcf-services-concurrency-problem.aspx"&gt;problem&lt;/a&gt; of ASP.NET sessions and blocking WCF calls). &lt;/p&gt;
&lt;p&gt;To make WCF use the ASP.NET compatibility mode you need to do the following two changes:&lt;/p&gt;
&lt;p&gt;1. Enable ASP.NET compatibility mode for the hosting environment in your web.config:&lt;/p&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;system.serviceModel&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;serviceHostingEnvironment&lt;/span&gt; &lt;span class="attr"&gt;aspNetCompatibilityEnabled&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;true&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;    
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;system.serviceModel&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;2. Set each of your services to support the compatibility mode, by adding the &lt;strong&gt;AspNetCompatibilityRequirements&lt;/strong&gt; attribute.&lt;/p&gt;&lt;pre class="csharpcode"&gt;[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] &lt;/pre&gt;
&lt;p&gt;You can read more about WCF and ASP.NET on &lt;a href="http://msdn.microsoft.com/en-us/library/aa702682(v=vs.110).aspx"&gt;MSDN&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;u&gt;So what has changed in WCF 4.5? &lt;/u&gt;&lt;/p&gt;
&lt;p&gt;In WCF 4.5 the default behavior of WCF is to support the ASP.NET compatibility mode automatically. This is achieved by the following changes: &lt;/p&gt;
&lt;p&gt;1. In the WCF Service Application project template, the &lt;strong&gt;aspNetCompatibilityEnabled&lt;/strong&gt; attribute was added to the &lt;strong&gt;serviceHostingEnvironment&lt;/strong&gt; element, and it is set to true by default.&lt;/p&gt;
&lt;p&gt;2. The default value of the &lt;strong&gt;AspNetCompatibilityRequirements&lt;/strong&gt; attribute has changed from &lt;strong&gt;NotAllowed&lt;/strong&gt; to &lt;strong&gt;Allowed&lt;/strong&gt;. Without this changed default, you would have needed to manually add the attribute to every new service. This is noticeable in the attribute’s documentation:&lt;/p&gt;
&lt;p&gt;WCF 4 - &lt;a title="http://msdn.microsoft.com/en-us/library/system.servicemodel.activation.aspnetcompatibilityrequirementsattribute.requirementsmode(v=VS.100).aspx" href="http://msdn.microsoft.com/en-us/library/system.servicemodel.activation.aspnetcompatibilityrequirementsattribute.requirementsmode(v=VS.100).aspx"&gt;http://msdn.microsoft.com/en-us/library/system.servicemodel.activation.aspnetcompatibilityrequirementsattribute.requirementsmode(v=VS.100).aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;WCF 4.5 - &lt;a title="http://msdn.microsoft.com/en-us/library/system.servicemodel.activation.aspnetcompatibilityrequirementsattribute.requirementsmode(v=VS.110).aspx" href="http://msdn.microsoft.com/en-us/library/system.servicemodel.activation.aspnetcompatibilityrequirementsattribute.requirementsmode(v=VS.110).aspx"&gt;http://msdn.microsoft.com/en-us/library/system.servicemodel.activation.aspnetcompatibilityrequirementsattribute.requirementsmode(v=VS.110).aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;ASP.NET compatibility mode is very useful if you need to use share information between your ASP.NET application and WCF service in regards to the HTTP context, session, or user authorization, but be careful of the &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2010/09/27/asp-net-compatible-wcf-services-concurrency-problem.aspx"&gt;concurrency problem&lt;/a&gt; that occurs when sharing session state between WCF and ASP.NET.&lt;/p&gt;
&lt;p&gt;Expect more on ASP.NET and WCF in next posts, so stay tuned. You can also follow me on Twitter (@IdoFlatow) to get updates as soon as new posts are published.&lt;/p&gt;
&lt;p&gt;The RTM of .NET 4.5 is still to come, and I assume many of you are still adjusting to WCF 4. If you want to learn more about the new features of WCF 4, come to my &lt;a href="http://vslive.com/Events/Orlando-2011/Sessions/Tuesday/T07-Whats-New-in-WCF-4.aspx"&gt;session&lt;/a&gt; at Visual Studio Live! 2011 in Orlando (December 5-9).&lt;/p&gt;
&lt;div style="PADDING-BOTTOM:0px;MARGIN:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;PADDING-TOP:0px;" class="wlWriterHeaderFooter"&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://blogs.microsoft.co.il/blogs/idof/archive/2011/10/31/what-s-new-in-wcf-4-5-changed-default-for-asp-net-compatibility-mode.aspx"&gt;&lt;img border="0" alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://blogs.microsoft.co.il/blogs/idof/archive/2011/10/31/what-s-new-in-wcf-4-5-changed-default-for-asp-net-compatibility-mode.aspx&amp;amp;bgcolor=6600FF" /&gt;&lt;/a&gt; &lt;a href="http://dotnetshoutout.com/Submit?url=http://blogs.microsoft.co.il/blogs/idof/archive/2011/10/31/what-s-new-in-wcf-4-5-changed-default-for-asp-net-compatibility-mode.aspx"&gt;&lt;img style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;BORDER-TOP:0px;BORDER-RIGHT:0px;" alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http://blogs.microsoft.co.il/blogs/idof/archive/2011/10/31/what-s-new-in-wcf-4-5-changed-default-for-asp-net-compatibility-mode.aspx" /&gt;&lt;/a&gt; &lt;a style="DISPLAY:none;" href="http://www.codeproject.com/script/Articles/BlogFeedList.aspx?amid=2199681" rel="tag"&gt;CodeProject&lt;/a&gt; &lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=923278" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/aspnetcompatibilitymode/default.aspx">aspnetcompatibilitymode</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/What_2700_s+new/default.aspx">What's new</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/WCF+4.5/default.aspx">WCF 4.5</category><feedburner:origLink>http://blogs.microsoft.co.il/blogs/idof/archive/2011/10/31/what-s-new-in-wcf-4-5-changed-default-for-asp-net-compatibility-mode.aspx</feedburner:origLink></item><item><title>My MVC/jQuery/Razor/NuGet/IIS Express session at VS Live 2011 Redmond</title><link>http://feedproxy.google.com/~r/IdoFlatowsBlog/~3/cAPd7DSM1tY/my-mvc-jquery-razor-nuget-iis-express-session-at-vs-live-2011-redmond.aspx</link><pubDate>Thu, 20 Oct 2011 03:43:14 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:918066</guid><dc:creator>Ido Flatow</dc:creator><slash:comments>4</slash:comments><wfw:commentRss>http://blogs.microsoft.co.il/blogs/idof/rsscomments.aspx?PostID=918066</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/idof/archive/2011/10/20/my-mvc-jquery-razor-nuget-iis-express-session-at-vs-live-2011-redmond.aspx#comments</comments><description>&lt;p&gt;Today I had my WebDev session about the new technologies related to web development:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;ASP.NET MVC 3&lt;/li&gt;    &lt;li&gt;Razor view engine&lt;/li&gt;    &lt;li&gt;jQuery&lt;/li&gt;    &lt;li&gt;NuGet&lt;/li&gt;    &lt;li&gt;IIS Express 7.5&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I enjoyed the session very much, and by the amount of tweets it looks like I wasn’t the only one.&lt;/p&gt;  &lt;p&gt;I hope no one got hurt from my flying balls &lt;img style="border-bottom-style:none;border-left-style:none;border-top-style:none;border-right-style:none;" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://blogs.microsoft.co.il/blogs/idof/wlEmoticon-smile_43C29084.png" /&gt;&lt;/p&gt;  &lt;p&gt;You can download the session’s slides and the two demos I showed from here: &lt;a title="http://bit.ly/vslive-2011-redmond" href="http://bit.ly/vslive-2011-redmond"&gt;http://bit.ly/vslive-2011-redmond&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I’m off to San-Francisco tomorrow for the &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2011/10/02/the-month-of-october-bears-good-news.aspx"&gt;North-America MCT summit&lt;/a&gt;. Visual Studio Live – thanks for having me, I will see you all again in &lt;a href="http://vslive.com/events/orlando-2011/tracks/track-list.aspx"&gt;VS Live Orlando&lt;/a&gt; in December.&lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="margin:0px;padding:0px 0px 0px 0px;"&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://blogs.microsoft.co.il/blogs/idof/archive/2011/10/20/my-mvc-jquery-razor-nuget-iis-express-session-at-vs-live-2011-redmond.aspx"&gt;&lt;img border="0" alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://blogs.microsoft.co.il/blogs/idof/archive/2011/10/20/my-mvc-jquery-razor-nuget-iis-express-session-at-vs-live-2011-redmond.aspx&amp;amp;bgcolor=6600FF" /&gt;&lt;/a&gt; &lt;a href="http://dotnetshoutout.com/Submit?url=http://blogs.microsoft.co.il/blogs/idof/archive/2011/10/20/my-mvc-jquery-razor-nuget-iis-express-session-at-vs-live-2011-redmond.aspx"&gt;&lt;img alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http://blogs.microsoft.co.il/blogs/idof/archive/2011/10/20/my-mvc-jquery-razor-nuget-iis-express-session-at-vs-live-2011-redmond.aspx" style="border:0px;" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=918066" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/ASP.NET+MVC+3/default.aspx">ASP.NET MVC 3</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/iis+7.5/default.aspx">iis 7.5</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/VS+Live/default.aspx">VS Live</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/webdev/default.aspx">webdev</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/razor/default.aspx">razor</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/NuGet/default.aspx">NuGet</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/jquery/default.aspx">jquery</category><feedburner:origLink>http://blogs.microsoft.co.il/blogs/idof/archive/2011/10/20/my-mvc-jquery-razor-nuget-iis-express-session-at-vs-live-2011-redmond.aspx</feedburner:origLink></item><item><title>My WCF Session at VS Live 2011 Redmond</title><link>http://feedproxy.google.com/~r/IdoFlatowsBlog/~3/44ZDSWog1A4/my-wcf-session-at-vs-live-2011-redmond.aspx</link><pubDate>Wed, 19 Oct 2011 15:17:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:917911</guid><dc:creator>Ido Flatow</dc:creator><slash:comments>1</slash:comments><wfw:commentRss>http://blogs.microsoft.co.il/blogs/idof/rsscomments.aspx?PostID=917911</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/idof/archive/2011/10/19/my-wcf-session-at-vs-live-2011-redmond.aspx#comments</comments><description>&lt;p&gt;Yesterday I had my WCF 4 session in VS Live, where I showed some of the new features of WCF 4, including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Configuration simplification&lt;/li&gt;
&lt;li&gt;IIS hosting features&lt;/li&gt;
&lt;li&gt;WebHttp improvements&lt;/li&gt;
&lt;li&gt;Routing services&lt;/li&gt;
&lt;li&gt;Discovery services&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;I also talked a bit about some other new WCF 4 features such as the DataContractResolver type, the new ReceiveContext API for MSMQ bindings, Monitoring WCF with ETW and PerfMon, the new binary stream encoder, and the new throttling defaults.&lt;/p&gt;
&lt;p&gt;Those of you who stayed till the end also heard about some of the new features that will be in WCF 4.5.&lt;/p&gt;
&lt;p&gt;So if you’ve missed the session, had to step outside for an important call, or you just want to try out the samples I showed, you can go ahead and download the slides and samples from here: &lt;a title="http://bit.ly/vslive-2011-redmond" href="http://bit.ly/vslive-2011-redmond"&gt;http://bit.ly/vslive-2011-redmond&lt;/a&gt;&lt;/p&gt;
&lt;div style="PADDING-BOTTOM:0px;MARGIN:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;PADDING-TOP:0px;" class="wlWriterHeaderFooter"&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://blogs.microsoft.co.il/blogs/idof/archive/2011/10/19/my-wcf-session-at-vs-live-2011-redmond.aspx"&gt;&lt;img border="0" alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://blogs.microsoft.co.il/blogs/idof/archive/2011/10/19/my-wcf-session-at-vs-live-2011-redmond.aspx&amp;amp;bgcolor=6600FF" /&gt;&lt;/a&gt; &lt;a href="http://dotnetshoutout.com/Submit?url=http://blogs.microsoft.co.il/blogs/idof/archive/2011/10/19/my-wcf-session-at-vs-live-2011-redmond.aspx"&gt;&lt;img style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;BORDER-TOP:0px;BORDER-RIGHT:0px;" alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http://blogs.microsoft.co.il/blogs/idof/archive/2011/10/19/my-wcf-session-at-vs-live-2011-redmond.aspx" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=917911" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/WCF/default.aspx">WCF</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/What_2700_s+new/default.aspx">What's new</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/WCF+4.5/default.aspx">WCF 4.5</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/VS+Live/default.aspx">VS Live</category><feedburner:origLink>http://blogs.microsoft.co.il/blogs/idof/archive/2011/10/19/my-wcf-session-at-vs-live-2011-redmond.aspx</feedburner:origLink></item><item><title>What’s new in WCF 4.5? BasicHttpsBinding</title><link>http://feedproxy.google.com/~r/IdoFlatowsBlog/~3/sbR11xDP0wo/what-s-new-in-wcf-4-5-basichttpsbinding.aspx</link><pubDate>Mon, 10 Oct 2011 20:44:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:913666</guid><dc:creator>Ido Flatow</dc:creator><slash:comments>5</slash:comments><wfw:commentRss>http://blogs.microsoft.co.il/blogs/idof/rsscomments.aspx?PostID=913666</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/idof/archive/2011/10/10/what-s-new-in-wcf-4-5-basichttpsbinding.aspx#comments</comments><description>&lt;p&gt;This is the seventh post in the WCF 4.5 series. In previous posts we’ve examined two new security features of WCF 4.5 and IIS – &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2011/09/25/what-s-new-in-wcf-4-5-multiple-authentication-support-on-a-single-endpoint-in-iis.aspx"&gt;multiple client credentials&lt;/a&gt; support, and &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2011/10/05/what-s-new-in-wcf-4-5-automatic-https-endpoint-for-iis.aspx"&gt;default HTTPS endpoint&lt;/a&gt; support, both new features are IIS-specific (or to be more exact, web hosting specific). In this post we will look into a new security configuration option in WCF 4.5 – the BasicHttpsBinding.&lt;/p&gt;
&lt;p&gt;Previous posts:&lt;/p&gt;
&lt;p&gt;1. &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2011/09/16/what-s-new-in-wcf-4-5-let-s-start-with-wcf-configuration.aspx"&gt;What’s new in WCF 4.5? let’s start with WCF configuration&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;2. &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2011/09/17/what-s-new-in-wcf-4-5-a-single-wsdl-file.aspx"&gt;What’s new in WCF 4.5? a single WSDL file&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;3. &lt;a title="What’s new in WCF 4.5- Configuration tooltips and intellisense in config files" href="http://blogs.microsoft.co.il/blogs/idof/archive/2011/09/19/what-s-new-in-wcf-4-5-configuration-tooltips-and-intellisense-in-config-files.aspx"&gt;What’s new in WCF 4.5? Configuration tooltips and intellisense in config files&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;4. &lt;font style="BACKGROUND-COLOR:#ffffff;"&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2011/09/25/what-s-new-in-wcf-4-5-configuration-validations.aspx"&gt;What’s new in WCF 4.5? Configuration validations&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;5. &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2011/09/25/what-s-new-in-wcf-4-5-multiple-authentication-support-on-a-single-endpoint-in-iis.aspx"&gt;What’s new in WCF 4.5? Multiple authentication support on a single endpoint in IIS&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;6. &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2011/10/05/what-s-new-in-wcf-4-5-automatic-https-endpoint-for-iis.aspx"&gt;What’s new in WCF 4.5? Automatic HTTPS endpoint for IIS&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms733043.aspx"&gt;Transport security&lt;/a&gt; is supported in WCF since day 1, and you can configure it by setting the security mode of your binding:&lt;/p&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;bindings&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;basicHttpBinding&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;binding&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;secured&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;security&lt;/span&gt; &lt;span class="attr"&gt;mode&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Transport&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;transport&lt;/span&gt; &lt;span class="attr"&gt;clientCredentialType&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Windows&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;security&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;                    
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;binding&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;basicHttpBinding&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;bindings&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;Declaring transport security based endpoints is quite an easy task in WCF, but does require writing some binding configuration in the config file. WCF 4.5 helps reduce the amount of configuration by adding a new type of binding – &lt;a href="http://msdn.microsoft.com/en-us/library/system.servicemodel.basichttpsbinding(v=vs.110).aspx"&gt;basicHttpsBinding&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The basicHttpsBinding is similar to basicHttpBinding, only it has the following defaults:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Security mode = Transport &lt;/li&gt;
&lt;li&gt;Client credential type = None &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Setting up an endpoint with a basicHttps binding is quite simple:&lt;/p&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;services&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;service&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;WcfServiceLibrary1.Service1&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;host&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;baseAddresses&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;add&lt;/span&gt; &lt;span class="attr"&gt;baseAddress&lt;/span&gt; = &lt;span class="kwrd"&gt;&amp;quot;http://localhost:8733/Design_Time_Addresses/WcfServiceLibrary1/Service1/&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;add&lt;/span&gt; &lt;span class="attr"&gt;baseAddress&lt;/span&gt; = &lt;span class="kwrd"&gt;&amp;quot;https://localhost:44310/Design_Time_Addresses/WcfServiceLibrary1/Service1/&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;baseAddresses&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;host&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;endpoint&lt;/span&gt; &lt;span class="attr"&gt;address&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;binding&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;basicHttpBinding&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;contract&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;WcfServiceLibrary1.IService1&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;endpoint&lt;/span&gt; &lt;span class="attr"&gt;address&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;binding&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;&lt;font style="BACKGROUND-COLOR:#ffff00;"&gt;basicHttpsBinding&lt;/font&gt;&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;contract&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;WcfServiceLibrary1.IService1&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;        
  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;service&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;services&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;If you want to change the default client credential type for the secured endpoints, you will need to create a binding configuration for the secured endpoint:&lt;/p&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;bindings&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;basicHttpsBinding&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;binding&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;security&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;transport&lt;/span&gt; &lt;span class="attr"&gt;clientCredentialType&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Windows&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;security&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;binding&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;basicHttpsBinding&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;bindings&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Since this is a secured binding, the security mode can be either &lt;strong&gt;Transport&lt;/strong&gt; or &lt;strong&gt;TransportWithMessageCredential&lt;/strong&gt; only. &lt;strong&gt;TransportCredentialOnly&lt;/strong&gt; is not supported for this type of binding.&lt;/p&gt;
&lt;p&gt;Stay tuned for more posts about the new features of WCF 4.5. You can also follow me on Twitter (@IdoFlatow) to get updates as soon as new posts are published.&lt;/p&gt;
&lt;p&gt;The RTM of .NET 4.5 is still to come, and I assume many of you are still adjusting to WCF 4. If you want to learn more about the new features of WCF 4, come to my &lt;a href="http://vslive.com/Events/Redmond-2011/Sessions/Tuesday/T8-Whats-New-in-WCF4.aspx"&gt;session&lt;/a&gt; at Visual Studio Live! 2011 in Redmond (October 17-21).&lt;/p&gt;
&lt;p&gt;Also, if you are an MCT and reside in the US, come hear my session about WCF 4 at the &lt;a href="http://www.mctsummit.org/"&gt;MCT 2011 North-America Summit&lt;/a&gt; that will be held in San-Francisco (October 19-21).&lt;/p&gt;
&lt;div style="PADDING-BOTTOM:0px;MARGIN:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;PADDING-TOP:0px;" class="wlWriterHeaderFooter"&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://blogs.microsoft.co.il/blogs/idof/archive/2011/10/10/what-s-new-in-wcf-4-5-basichttpsbinding.aspx"&gt;&lt;img border="0" alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://blogs.microsoft.co.il/blogs/idof/archive/2011/10/10/what-s-new-in-wcf-4-5-basichttpsbinding.aspx&amp;amp;bgcolor=6600FF" /&gt;&lt;/a&gt; &lt;a href="http://dotnetshoutout.com/Submit?url=http://blogs.microsoft.co.il/blogs/idof/archive/2011/10/10/what-s-new-in-wcf-4-5-basichttpsbinding.aspx"&gt;&lt;img style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;BORDER-TOP:0px;BORDER-RIGHT:0px;" alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http://blogs.microsoft.co.il/blogs/idof/archive/2011/10/10/what-s-new-in-wcf-4-5-basichttpsbinding.aspx" /&gt;&lt;/a&gt; &lt;a style="DISPLAY:none;" href="http://www.codeproject.com/script/Articles/BlogFeedList.aspx?amid=2199681" rel="tag"&gt;CodeProject&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=913666" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/What_2700_s+new/default.aspx">What's new</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/configuration/default.aspx">configuration</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/WCF+4.5/default.aspx">WCF 4.5</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/HTTPS/default.aspx">HTTPS</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/basicHttpsBinding/default.aspx">basicHttpsBinding</category><feedburner:origLink>http://blogs.microsoft.co.il/blogs/idof/archive/2011/10/10/what-s-new-in-wcf-4-5-basichttpsbinding.aspx</feedburner:origLink></item><item><title>What’s new in WCF 4.5? Automatic HTTPS endpoint for IIS</title><link>http://feedproxy.google.com/~r/IdoFlatowsBlog/~3/G6TdmB6xoyk/what-s-new-in-wcf-4-5-automatic-https-endpoint-for-iis.aspx</link><pubDate>Wed, 05 Oct 2011 15:41:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:911108</guid><dc:creator>Ido Flatow</dc:creator><slash:comments>4</slash:comments><wfw:commentRss>http://blogs.microsoft.co.il/blogs/idof/rsscomments.aspx?PostID=911108</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/idof/archive/2011/10/05/what-s-new-in-wcf-4-5-automatic-https-endpoint-for-iis.aspx#comments</comments><description>&lt;p&gt;This is the sixth post in the WCF 4.5 series. In the previous &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2011/09/25/what-s-new-in-wcf-4-5-multiple-authentication-support-on-a-single-endpoint-in-iis.aspx"&gt;post&lt;/a&gt; we’ve discussed new authentication features for services hosted in IIS, and this post is continuing the new IIS hosting features list - automatic HTTPS endpoints in IIS.&lt;/p&gt;
&lt;p&gt;Previous posts:&lt;/p&gt;
&lt;p&gt;1. &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2011/09/16/what-s-new-in-wcf-4-5-let-s-start-with-wcf-configuration.aspx"&gt;What’s new in WCF 4.5? let’s start with WCF configuration&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;2. &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2011/09/17/what-s-new-in-wcf-4-5-a-single-wsdl-file.aspx"&gt;What’s new in WCF 4.5? a single WSDL file&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;3. &lt;a title="What’s new in WCF 4.5- Configuration tooltips and intellisense in config files" href="http://blogs.microsoft.co.il/blogs/idof/archive/2011/09/19/what-s-new-in-wcf-4-5-configuration-tooltips-and-intellisense-in-config-files.aspx"&gt;What’s new in WCF 4.5? Configuration tooltips and intellisense in config files&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;4. &lt;font style="BACKGROUND-COLOR:#ffffff;"&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2011/09/25/what-s-new-in-wcf-4-5-configuration-validations.aspx"&gt;What’s new in WCF 4.5? Configuration validations&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;5. &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2011/09/25/what-s-new-in-wcf-4-5-multiple-authentication-support-on-a-single-endpoint-in-iis.aspx"&gt;What’s new in WCF 4.5? Multiple authentication support on a single endpoint in IIS&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;So what is the automatic HTTPS endpoint feature? WCF 4 &lt;a href="http://msdn.microsoft.com/en-us/library/ee354381.aspx"&gt;introduced&lt;/a&gt; the default endpoint feature which enables the service host to automatically create &lt;strong&gt;default endpoints&lt;/strong&gt; if &lt;strong&gt;no endpoint has been specified for the service&lt;/strong&gt;. The default endpoints are created for each of the service host’s base addresses, according to a &lt;strong&gt;mapping between a base address scheme (HTTP, TCP…) and a matching binding&lt;/strong&gt;. For example, if you have an HTTP base address, you will get an endpoint that uses the BasicHttp binding.&lt;/p&gt;
&lt;p&gt;So what’s new in WCF 4.5? we now get another scheme mapping for HTTPS, so if your IIS has SSL enabled, and you don’t have any specific endpoints specified for the service, you will get both HTTP and HTTPS endpoints. The default binding for the HTTPS scheme is the same as for the HTTP scheme – BasicHttp binding.&lt;/p&gt;
&lt;p&gt;How can you enable this feature?&lt;/p&gt;
&lt;p&gt;1. Set up SSL in your IIS; there’s an excellent &lt;a href="http://learn.iis.net/page.aspx/144/how-to-set-up-ssl-on-iis-7/"&gt;tutorial&lt;/a&gt; for this in the IIS.NET website.&lt;/p&gt;
&lt;p&gt;2. Create the WCF service and host it in a web application.&lt;/p&gt;
&lt;p&gt;3. Set the web application to be hosted in IIS.&lt;/p&gt;
&lt;p&gt;4. Verify that the service doesn’t have any endpoint configuration set for it, so it will use default endpoints.&lt;/p&gt;
&lt;p&gt;That’s it!&lt;/p&gt;
&lt;p&gt;If you now browse to your service’s WSDL file, you will notice that you get two default endpoints – HTTP and HTTPS:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/idof/image_7732D9CF.png"&gt;&lt;img style="BACKGROUND-IMAGE:none;BORDER-RIGHT-WIDTH:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;PADDING-TOP:0px;" title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/idof/image_thumb_6250BB82.png" width="686" height="128" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;See anything strange? &lt;/strong&gt;you are right! for some reason the two endpoints use different machine names in the address.&lt;/p&gt;
&lt;p&gt;Since WCF 4, services hosted in IIS automatically use the &lt;a href="http://msdn.microsoft.com/en-us/library/ee816894.aspx"&gt;useRequestHeadersForMetadataAddress&lt;/a&gt; behavior which constructs the endpoint host name according to the host name used in the WSDL GET request. This behavior is required especially for web farms where clients see a special host name and not the machine name itself, but as you can see, the automatic HTTPS endpoint does use the machine name for some reason, which can be a bit problematic when the IIS server is a part of a web farm.&lt;/p&gt;
&lt;p&gt;If you have SSL set in IIS, but you’re not interested in having an HTTPS endpoint, you can remove it by removing the HTTPS scheme mapping as shown in the following XML configuration:&lt;/p&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;system.serviceModel&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;protocolMapping&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;remove&lt;/span&gt; &lt;span class="attr"&gt;scheme&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;https&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;protocolMapping&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;    
    . . .        
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;system.serviceModel&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;This new feature is very useful if you need HTTPS endpoints, since before this feature if we needed HTTPS endpoints, we couldn’t use the default endpoints and had to declare all endpoints manually, both HTTP and HTTPS. This is another step for making configuration files smaller.&lt;/p&gt;
&lt;p&gt;Unfortunately, there is currently the bug of the host name, I hope it will be resolved by the time the new framework is released.&lt;/p&gt;
&lt;p&gt;Stay tuned for more posts about the new features of WCF 4.5. You can also follow me on Twitter (@IdoFlatow) to get updates as soon as new posts are published.&lt;/p&gt;
&lt;p&gt;The RTM of .NET 4.5 is still to come, and I assume many of you are still adjusting to WCF 4. If you want to learn more about the new features of WCF 4, come to my &lt;a href="http://vslive.com/Events/Redmond-2011/Sessions/Tuesday/T8-Whats-New-in-WCF4.aspx"&gt;session&lt;/a&gt; at Visual Studio Live! 2011 in Redmond (October 17-21).&lt;/p&gt;
&lt;p&gt;Also, if you are an MCT and reside in the US, come hear my session about WCF 4 at the &lt;a href="http://www.mctsummit.org/"&gt;MCT 2011 North-America Summit&lt;/a&gt; that will be held in San-Francisco (October 19-21).&lt;/p&gt;
&lt;div style="PADDING-BOTTOM:0px;MARGIN:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;PADDING-TOP:0px;" class="wlWriterHeaderFooter"&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://blogs.microsoft.co.il/blogs/idof/archive/2011/10/05/what-s-new-in-wcf-4-5-automatic-https-endpoint-for-iis.aspx"&gt;&lt;img border="0" alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://blogs.microsoft.co.il/blogs/idof/archive/2011/10/05/what-s-new-in-wcf-4-5-automatic-https-endpoint-for-iis.aspx&amp;amp;bgcolor=6600FF" /&gt;&lt;/a&gt; &lt;a href="http://dotnetshoutout.com/Submit?url=http://blogs.microsoft.co.il/blogs/idof/archive/2011/10/05/what-s-new-in-wcf-4-5-automatic-https-endpoint-for-iis.aspx"&gt;&lt;img style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;BORDER-TOP:0px;BORDER-RIGHT:0px;" alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http://blogs.microsoft.co.il/blogs/idof/archive/2011/10/05/what-s-new-in-wcf-4-5-automatic-https-endpoint-for-iis.aspx" /&gt;&lt;/a&gt; &lt;a style="DISPLAY:none;" href="http://www.codeproject.com/script/Articles/BlogFeedList.aspx?amid=2199681" rel="tag"&gt;CodeProject&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=911108" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/IIS/default.aspx">IIS</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/What_2700_s+new/default.aspx">What's new</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/configuration/default.aspx">configuration</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/WCF+4.5/default.aspx">WCF 4.5</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/HTTPS/default.aspx">HTTPS</category><feedburner:origLink>http://blogs.microsoft.co.il/blogs/idof/archive/2011/10/05/what-s-new-in-wcf-4-5-automatic-https-endpoint-for-iis.aspx</feedburner:origLink></item><item><title>The month of October bears good news</title><link>http://feedproxy.google.com/~r/IdoFlatowsBlog/~3/cZXOZRfc7ik/the-month-of-october-bears-good-news.aspx</link><pubDate>Sun, 02 Oct 2011 19:46:20 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:909779</guid><dc:creator>Ido Flatow</dc:creator><slash:comments>3</slash:comments><wfw:commentRss>http://blogs.microsoft.co.il/blogs/idof/rsscomments.aspx?PostID=909779</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/idof/archive/2011/10/02/the-month-of-october-bears-good-news.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/idof/MVP_FullColor_ForScreen---Blog_61573C6F.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;float:right;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="MVP_FullColor_ForScreen - Blog" border="0" alt="MVP_FullColor_ForScreen - Blog" align="right" src="http://blogs.microsoft.co.il/blogs/idof/MVP_FullColor_ForScreen---Blog_thumb_3AA8B022.png" width="119" height="185" /&gt;&lt;/a&gt;October began yesterday with an email from Microsoft congratulating me for receiving &lt;strong&gt;Microsoft’s Most Valuable Professional (MVP) award&lt;/strong&gt;. I’m a connected system developer MVP, which kind of describes my work – working with distributed systems, connecting clients and servers, building WCF services, ASP.NET applications, working with IIS servers, etc…&lt;/p&gt;  &lt;p&gt;This is the first time I receive the MVP award, so I’m quite excited. Special thanks to the people who helped with my nomination – Guy Burstein and Meir Pinto from Microsoft Israel, to my managers at Sela Group – David Bassa and Ishai Ram, and of course to all of you that are reading my blog, that come to my sessions in conferences, to the hundreds of people I trained over the years, and to those whose nickname I only know that marked my answers as correct in forums. Congratulations also to my colleagues in Sela – Arik Poznanski for his new MVP in Visual C#, and to Gil Fink for his third year in a row of being a Data Platform MVP.&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/idof/azure_70CA2871.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;float:right;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="azure" border="0" alt="azure" align="right" src="http://blogs.microsoft.co.il/blogs/idof/azure_thumb_54008D8F.png" width="132" height="132" /&gt;&lt;/a&gt;As I said before, this month bears many good news – next week I’m heading to Microsoft HQ in Redmond, where I’m going to attend an &lt;strong&gt;Azure Platform Metro course&lt;/strong&gt;. Metro courses are special Microsoft courses that are constructed by DPE teams in Microsoft (developer and platform evangelists) and are intended to teach new technologies for eager developers. I’m going to participate in this course with several other trainers from all over the world, and learn the newest stuff in the Azure platform from Microsoft’s experts, so it’s going to be a great experience for me, and I’m very much looking forward to it.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/idof/VSLiveRedmond_2A3D129C.jpg"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;float:right;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="VSLiveRedmond" border="0" alt="VSLiveRedmond" align="right" src="http://blogs.microsoft.co.il/blogs/idof/VSLiveRedmond_thumb_67E9FA58.jpg" width="319" height="76" /&gt;&lt;/a&gt;October goes on with good stuff – the following week after the course I’m going to attend the &lt;strong&gt;Visual Studio Live! conference in Redmond&lt;/strong&gt; (17-21 of October), this time not as a listener, but as a speaker.     &lt;br /&gt;I’m giving two sessions in the conference, about the new features of WCF 4, and about the new face of web development – ASP.NET MVC, jQuery, and Razor.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/idof/MCTSummit_65CCFB8F.gif"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;float:right;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="MCTSummit" border="0" alt="MCTSummit" align="right" src="http://blogs.microsoft.co.il/blogs/idof/MCTSummit_thumb_1D330CBE.gif" width="320" height="94" /&gt;&lt;/a&gt;And for the finale of October – after my two sessions, I’m catching a flight to San-Francisco to attend the &lt;strong&gt;North-America 2011 MCT Summit&lt;/strong&gt; (Microsoft Certified Trainers Summit), which is also during 19-21 of October. In the summit I will be presenting yet again the new features of WCF 4, but will also probably spend some time talking about teaching tips for the official WCF 4 course (10263A) that I co-authored last year for Microsoft.&lt;/p&gt;  &lt;p&gt;If you are working in the area of Seattle or San-Francisco, and &lt;strong&gt;interested in&lt;/strong&gt; &lt;strong&gt;WCF consulting or training&lt;/strong&gt;, let me know as I have a few days off that I can dedicate to consultations and courses. I will be available in the Seattle area between 14-17 of October, and in the San-Francisco area between 21-22 of October. I also have a 9-hour connection in Newark on the 23rd, if you want a quick consultation &lt;img style="border-bottom-style:none;border-left-style:none;border-top-style:none;border-right-style:none;" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://blogs.microsoft.co.il/blogs/idof/wlEmoticon-smile_347E112F.png" /&gt;&lt;/p&gt;  &lt;p&gt;October started great with my new MVP, and it’s going to end great with two weeks of learning and speaking in the US.&lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="margin:0px;padding:0px 0px 0px 0px;"&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://blogs.microsoft.co.il/blogs/idof/archive/2011/10/02/the-month-of-october-bears-good-news.aspx"&gt;&lt;img border="0" alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://blogs.microsoft.co.il/blogs/idof/archive/2011/10/02/the-month-of-october-bears-good-news.aspx&amp;amp;bgcolor=6600FF" /&gt;&lt;/a&gt; &lt;a href="http://dotnetshoutout.com/Submit?url=http://blogs.microsoft.co.il/blogs/idof/archive/2011/10/02/the-month-of-october-bears-good-news.aspx"&gt;&lt;img alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http://blogs.microsoft.co.il/blogs/idof/archive/2011/10/02/the-month-of-october-bears-good-news.aspx" style="border:0px;" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=909779" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/WCF/default.aspx">WCF</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/OffTopic/default.aspx">OffTopic</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/MCT+Summit/default.aspx">MCT Summit</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/VS+Live/default.aspx">VS Live</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/MVP/default.aspx">MVP</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/connected+system+developer/default.aspx">connected system developer</category><feedburner:origLink>http://blogs.microsoft.co.il/blogs/idof/archive/2011/10/02/the-month-of-october-bears-good-news.aspx</feedburner:origLink></item></channel></rss>

