<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>WCF</title>
        <link>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/category/61.aspx</link>
        <description>WCF</description>
        <language>en-US</language>
        <copyright>Shawn Weisfeld</copyright>
        <generator>Subtext Version 2.1.2.2</generator>
        <item>
            <title>Expose your Entity Framework Data Models with WCF Data Services by Shawn Weisfeld @ Dallas ASP.NET UG on 02/23/2010</title>
            <link>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/archive/2010/02/21/expose-your-entity-framework-data-models-with-wcf-data-services.aspx</link>
            <description>&lt;p&gt;Another in the series of recordings I have done for INETA Live. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Video&lt;/strong&gt;&lt;br /&gt;
&lt;embed height="300" type="application/x-shockwave-flash" width="400" src="http://blip.tv/play/hYpfgcjNOwA" allowscriptaccess="always" allowfullscreen="true" /&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Slides/Code Download:&lt;/strong&gt;&lt;br /&gt;
&lt;a href="http://www.developerroundtable.com/Libraries/Misc_Stuff/WCFDataServicesDemo.sflb.ashx?download=true"&gt;Click Here&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Abstract:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The WCF Data Services (a.k.a. ADO.NET Data Services or code name Astoria) framework consists of a combination of patterns and libraries that enable the creation and consumption of data services for the web. This is implemented in done in a standards based (OData) RESTful way serializing the data to JSON or AtomPub. In this talk we will introduce the WCF Data Services platform, talk about the basic underpinnings of the technology. Then we will build a simple Entity Framework Data Model and using WCF Data Services expose it to a simple web application. Through this process we will discuss retrieving data via URI and LINQ to ADO.NET Data Services. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Bio:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Shawn (http://www.shawnweisfeld.com) is a Staff Developer at a fortune 100 company. There he specializes in intranet &amp;amp; smart client development for internal line of business applications. Besides his day job Shawn also is an Adjunct Professor at The Florida Institute of Technology. He also does freelance software development work for local small businesses and training. In his free time he volunteers with INETA NorAm (http://www.ineta.org/) where he serves at the Director of Community Activities. Shawn started his career at his family business in Port St. Lucie FL while working on his undergraduate degree in Business Administration at the University of Central Florida and after a year off Shawn moved back to Orlando to pursue a Masters degree in Management Information Systems at The University of Central Florida and has since earned a second Masters degree in Computer Information Systems from Florida Institute of Technology. Shawn was awarded the Microsoft C# Most Valuable Professional award for 2007 &amp;amp; 2008. Shawn is an avid technology presenter and since July of 2005 Shawn has presented at many user group events, and even got to speak for Microsoft at the launch of Visual Studio 2008.&lt;/p&gt;&lt;img src="http://www.drowningintechnicaldebt.com/ShawnWeisfeld/aggbug/676.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Shawn Weisfeld</dc:creator>
            <guid>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/archive/2010/02/21/expose-your-entity-framework-data-models-with-wcf-data-services.aspx</guid>
            <pubDate>Sun, 21 Feb 2010 22:54:24 GMT</pubDate>
            <wfw:comment>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/comments/676.aspx</wfw:comment>
            <comments>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/archive/2010/02/21/expose-your-entity-framework-data-models-with-wcf-data-services.aspx#feedback</comments>
            <slash:comments>5</slash:comments>
            <wfw:commentRss>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/comments/commentRss/676.aspx</wfw:commentRss>
            <trackback:ping>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/services/trackbacks/676.aspx</trackback:ping>
        </item>
        <item>
            <title>SharePoint WebServices are your friend</title>
            <link>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/archive/2009/02/24/sharepoint-webservice-are-your-friend.aspx</link>
            <description>&lt;p&gt;Ever wanted access to that treasure trove of information available in SharePoint lists scattered across your enterprise? Ever wanted to provide a quick and dirty UI for users to enter data, but need to have programmatic access to the data? Use SharePoint! SharePoint provides WebServices that give you access to just about everything you can think of (&lt;a href="http://msdn.microsoft.com/en-us/library/ms954015.aspx" mce_href="http://msdn.microsoft.com/en-us/library/ms954015.aspx"&gt;http://msdn.microsoft.com/en-us/library/ms954015.aspx&lt;/a&gt;). For the purposes of this article I am going to use the Lists WebService to 1) get data from a list, 2) Add an item to the list and 3) Delete an item from the list. &lt;/p&gt;
&lt;p&gt;The first step is to add two service references to Sharepoint. The first is to the Lists WebService (http://server/_vti_bin/Lists.asmx), and the second is to the Views WebService (http://server/_vti_bin/Views.asmx). Before you go and add the services references you need to ensure you have permissions to the service. You do this by putting the url to the asmx in the browser and adding "?WSDL" to the end. If you get a blank html page then you do NOT have permissions to that service, well at least for that node. In my environment I only have permissions to a sub site in SharePoint. To that end I had to point directly to the WebService for the SharePoint site that I have access to. For example the address that I have to use is (http://server/site1/subsite2/subsite3/subsite4/_vti_bin/Lists.asmx). So after you ensured you have the correct URL you can now add the service references to your project. Easy enough to do right click on the project in the solution explorer in VS.NET and select "Add Service Reference" (Note I am using VS.NET 2008). &lt;/p&gt;
&lt;p&gt;Now that you have your 2 service references you need to check your WCF configuration in the app/web config file. Due to my environment I had to set it to the following: &lt;/p&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&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;security&lt;/span&gt; &lt;span class="attr"&gt;mode&lt;/span&gt;&lt;span class="kwrd"&gt;="TransportCredentialOnly"&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;transport&lt;/span&gt; &lt;span class="attr"&gt;clientCredentialType&lt;/span&gt;&lt;span class="kwrd"&gt;="Ntlm"&lt;/span&gt; &lt;span class="attr"&gt;proxyCredentialType&lt;/span&gt;&lt;span class="kwrd"&gt;="None"&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;3: &lt;/span&gt;        &lt;span class="attr"&gt;realm&lt;/span&gt;&lt;span class="kwrd"&gt;=""&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;4: &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;message&lt;/span&gt; &lt;span class="attr"&gt;clientCredentialType&lt;/span&gt;&lt;span class="kwrd"&gt;="UserName"&lt;/span&gt; &lt;span class="attr"&gt;algorithmSuite&lt;/span&gt;&lt;span class="kwrd"&gt;="Default"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&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;security&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;The next step is to get the ID’s for the List and View that you want to pull the data for. The code below converts the name or title of the list/view into the ID. From what I read it is recommended that you use the ID’s however passing in the name to the web methods will work in most cases. &lt;/p&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;1: &lt;/span&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; GetListID(&lt;span class="kwrd"&gt;string&lt;/span&gt; listName)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;2: &lt;/span&gt;        {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;3: &lt;/span&gt;            &lt;span class="rem"&gt;//Find the list we want&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;4: &lt;/span&gt;            &lt;span class="kwrd"&gt;string&lt;/span&gt; listID = &lt;span class="kwrd"&gt;null&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;5: &lt;/span&gt;            ListsSoapClient ws = &lt;span class="kwrd"&gt;new&lt;/span&gt; ListsSoapClient();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;6: &lt;/span&gt;            &lt;span class="kwrd"&gt;try&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&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;                XDocument doc = XDocument.Parse(ws.GetListCollection().OuterXml);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;9: &lt;/span&gt;                listID = (from x &lt;span class="kwrd"&gt;in&lt;/span&gt; doc.Elements().First().Elements()&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;10: &lt;/span&gt;                          &lt;span class="kwrd"&gt;where&lt;/span&gt; x.Attribute(&lt;span class="str"&gt;"Title"&lt;/span&gt;).Value.Equals(listName)&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;11: &lt;/span&gt;                          select x.Attribute(&lt;span class="str"&gt;"ID"&lt;/span&gt;).Value).FirstOrDefault();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;12: &lt;/span&gt;            }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;13: &lt;/span&gt;            &lt;span class="kwrd"&gt;catch&lt;/span&gt; (TimeoutException timeout)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;14: &lt;/span&gt;            {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;15: &lt;/span&gt;                &lt;span class="rem"&gt;//Handle the timeout exception.&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;16: &lt;/span&gt;                ws.Abort();&lt;/pre&gt;&lt;pre class="alt"&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;            &lt;span class="kwrd"&gt;catch&lt;/span&gt; (CommunicationException commException)&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;19: &lt;/span&gt;            {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;20: &lt;/span&gt;                &lt;span class="rem"&gt;// Handle the communication exception.&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;21: &lt;/span&gt;                ws.Abort();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;22: &lt;/span&gt;            }&lt;/pre&gt;&lt;pre class="alt"&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;            Console.WriteLine(&lt;span class="str"&gt;"\n\nI found that List '{0}' has ID '{1}'"&lt;/span&gt;, listName, listID);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;25: &lt;/span&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; listID;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;26: &lt;/span&gt;        }&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;1: &lt;/span&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; GetViewID(&lt;span class="kwrd"&gt;string&lt;/span&gt; viewName, &lt;span class="kwrd"&gt;string&lt;/span&gt; listID)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;2: &lt;/span&gt;        {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;3: &lt;/span&gt;            &lt;span class="rem"&gt;//Find the view we want&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;4: &lt;/span&gt;            &lt;span class="kwrd"&gt;string&lt;/span&gt; viewID = &lt;span class="kwrd"&gt;null&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;5: &lt;/span&gt;            ViewsSoapClient ws = &lt;span class="kwrd"&gt;new&lt;/span&gt; ViewsSoapClient();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;6: &lt;/span&gt;            &lt;span class="kwrd"&gt;try&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&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;                XDocument doc = XDocument.Parse(ws.GetViewCollection(listID).OuterXml);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;9: &lt;/span&gt;                viewID = (from x &lt;span class="kwrd"&gt;in&lt;/span&gt; doc.Elements().First().Elements()&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;10: &lt;/span&gt;                          &lt;span class="kwrd"&gt;where&lt;/span&gt; x.Attribute(&lt;span class="str"&gt;"DisplayName"&lt;/span&gt;).Value.Equals(viewName)&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;11: &lt;/span&gt;                          select x.Attribute(&lt;span class="str"&gt;"Name"&lt;/span&gt;).Value).FirstOrDefault();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;12: &lt;/span&gt; &lt;/pre&gt;&lt;pre class="alt"&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;catch&lt;/span&gt; (TimeoutException timeout)&lt;/pre&gt;&lt;pre class="alt"&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;// Handle the timeout exception.&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;17: &lt;/span&gt;                ws.Abort();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;18: &lt;/span&gt;            }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;19: &lt;/span&gt;            &lt;span class="kwrd"&gt;catch&lt;/span&gt; (CommunicationException commException)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;20: &lt;/span&gt;            {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;21: &lt;/span&gt;                &lt;span class="rem"&gt;//Handle the communication exception.&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;22: &lt;/span&gt;                ws.Abort();&lt;/pre&gt;&lt;pre class="alt"&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;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;25: &lt;/span&gt;            Console.WriteLine(&lt;span class="str"&gt;"\n\nI found that View '{0}' has ID '{1}'"&lt;/span&gt;, viewName, viewID);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;26: &lt;/span&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; viewID;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;27: &lt;/span&gt;        }&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;With all the plumbing out of the way I can now call the service to retrieve all the data in my list. &lt;/p&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; XDocument GetListData(&lt;span class="kwrd"&gt;string&lt;/span&gt; listID, &lt;span class="kwrd"&gt;string&lt;/span&gt; viewID)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;            XDocument list_data = &lt;span class="kwrd"&gt;null&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;            ListsSoapClient ws = &lt;span class="kwrd"&gt;new&lt;/span&gt; ListsSoapClient();&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;            &lt;span class="kwrd"&gt;try&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;            {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;                list_data = XDocument.Parse(ws.GetListItems(listID, viewID, &lt;span class="kwrd"&gt;null&lt;/span&gt;, &lt;span class="kwrd"&gt;null&lt;/span&gt;, &lt;span class="kwrd"&gt;null&lt;/span&gt;, &lt;span class="kwrd"&gt;null&lt;/span&gt;, &lt;span class="kwrd"&gt;null&lt;/span&gt;).OuterXml);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;                var q = (from x &lt;span class="kwrd"&gt;in&lt;/span&gt; list_data.Elements().First().Elements().First().Elements()&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;                         select &lt;span class="kwrd"&gt;new&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;                         {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;                             Title = x.Attribute(&lt;span class="str"&gt;"ows_LinkTitle"&lt;/span&gt;).Value,&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;                             Field1 = x.Attribute(&lt;span class="str"&gt;"ows_Field1"&lt;/span&gt;).Value,&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;                             Field2 = x.Attribute(&lt;span class="str"&gt;"ows_Field2"&lt;/span&gt;).Value&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;                         });&lt;/pre&gt;&lt;pre class="alt"&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;                Console.WriteLine(&lt;span class="str"&gt;"\n\nThe List has the following items"&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;                &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (var r &lt;span class="kwrd"&gt;in&lt;/span&gt; q.ToList())&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;                {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;                    Console.WriteLine(&lt;span class="str"&gt;"{0}\t{1}\t{2}"&lt;/span&gt;, r.Title, r.Field1, r.Field2);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;                }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;            }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;            &lt;span class="kwrd"&gt;catch&lt;/span&gt; (TimeoutException timeout)&lt;/pre&gt;&lt;pre class="alt"&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="rem"&gt;// Handle the timeout exception.&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;                ws.Abort();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;            }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;            &lt;span class="kwrd"&gt;catch&lt;/span&gt; (CommunicationException commException)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;            {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;                &lt;span class="rem"&gt;// Handle the communication exception.&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;                ws.Abort();&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;            }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  33:  &lt;/span&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; list_data;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  34:  &lt;/span&gt;        }&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;I can also Add an item to the list: &lt;/p&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; AddListItem(&lt;span class="kwrd"&gt;string&lt;/span&gt; listID)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;            &lt;span class="rem"&gt;//Add List Item&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;            XElement new_item = &lt;span class="kwrd"&gt;new&lt;/span&gt; XElement(&lt;span class="str"&gt;"Batch"&lt;/span&gt;,&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;                &lt;span class="kwrd"&gt;new&lt;/span&gt; XAttribute(&lt;span class="str"&gt;"OnError"&lt;/span&gt;, &lt;span class="str"&gt;"Continue"&lt;/span&gt;),&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;                &lt;span class="kwrd"&gt;new&lt;/span&gt; XAttribute(&lt;span class="str"&gt;"ListVersion"&lt;/span&gt;, &lt;span class="str"&gt;"1"&lt;/span&gt;),&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;                &lt;span class="kwrd"&gt;new&lt;/span&gt; XElement(&lt;span class="str"&gt;"Method"&lt;/span&gt;,&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;                    &lt;span class="kwrd"&gt;new&lt;/span&gt; XAttribute(&lt;span class="str"&gt;"ID"&lt;/span&gt;, &lt;span class="str"&gt;"1"&lt;/span&gt;),&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;                    &lt;span class="kwrd"&gt;new&lt;/span&gt; XAttribute(&lt;span class="str"&gt;"Cmd"&lt;/span&gt;, &lt;span class="str"&gt;"New"&lt;/span&gt;),&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;                    &lt;span class="kwrd"&gt;new&lt;/span&gt; XElement(&lt;span class="str"&gt;"Field"&lt;/span&gt;,&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;                        &lt;span class="kwrd"&gt;new&lt;/span&gt; XAttribute(&lt;span class="str"&gt;"Name"&lt;/span&gt;, &lt;span class="str"&gt;"Title"&lt;/span&gt;),&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;                        &lt;span class="str"&gt;"New Title"&lt;/span&gt;),&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;                    &lt;span class="kwrd"&gt;new&lt;/span&gt; XElement(&lt;span class="str"&gt;"Field"&lt;/span&gt;,&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;                        &lt;span class="kwrd"&gt;new&lt;/span&gt; XAttribute(&lt;span class="str"&gt;"Name"&lt;/span&gt;, &lt;span class="str"&gt;"Field1"&lt;/span&gt;),&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;                        &lt;span class="str"&gt;"new field 1"&lt;/span&gt;),&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;                    &lt;span class="kwrd"&gt;new&lt;/span&gt; XElement(&lt;span class="str"&gt;"Field"&lt;/span&gt;,&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;                        &lt;span class="kwrd"&gt;new&lt;/span&gt; XAttribute(&lt;span class="str"&gt;"Name"&lt;/span&gt;, &lt;span class="str"&gt;"Field2"&lt;/span&gt;),&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;                        &lt;span class="str"&gt;"new field 2"&lt;/span&gt;)));&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt; &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;            ListsSoapClient ws = &lt;span class="kwrd"&gt;new&lt;/span&gt; ListsSoapClient();&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;            &lt;span class="kwrd"&gt;try&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;            {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;                Console.WriteLine(&lt;span class="str"&gt;"\n\nAdding Item to the list . . ."&lt;/span&gt;);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;                Console.WriteLine(ws.UpdateListItems(listID, new_item.GetXmlElement()).OuterXml);&lt;/pre&gt;&lt;pre class="alt"&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;catch&lt;/span&gt; (TimeoutException timeout)&lt;/pre&gt;&lt;pre class="alt"&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="rem"&gt;// Handle the timeout exception.&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;                ws.Abort();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;            }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;            &lt;span class="kwrd"&gt;catch&lt;/span&gt; (CommunicationException commException)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt;            {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  33:  &lt;/span&gt;                &lt;span class="rem"&gt;// Handle the communication exception.&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  34:  &lt;/span&gt;                ws.Abort();&lt;/pre&gt;&lt;pre class="alt"&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;        }&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;And delete an item from the list: &lt;/p&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; DeleteListItem(&lt;span class="kwrd"&gt;string&lt;/span&gt; listID, &lt;span class="kwrd"&gt;string&lt;/span&gt; item_id)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;            ListsSoapClient ws = &lt;span class="kwrd"&gt;new&lt;/span&gt; ListsSoapClient();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;            &lt;span class="kwrd"&gt;try&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;            {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;                XElement delete_item = &lt;span class="kwrd"&gt;new&lt;/span&gt; XElement(&lt;span class="str"&gt;"Batch"&lt;/span&gt;,&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;                        &lt;span class="kwrd"&gt;new&lt;/span&gt; XAttribute(&lt;span class="str"&gt;"OnError"&lt;/span&gt;, &lt;span class="str"&gt;"Continue"&lt;/span&gt;),&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;                        &lt;span class="kwrd"&gt;new&lt;/span&gt; XAttribute(&lt;span class="str"&gt;"ListVersion"&lt;/span&gt;, &lt;span class="str"&gt;"1"&lt;/span&gt;),&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;                        &lt;span class="kwrd"&gt;new&lt;/span&gt; XElement(&lt;span class="str"&gt;"Method"&lt;/span&gt;,&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;                            &lt;span class="kwrd"&gt;new&lt;/span&gt; XAttribute(&lt;span class="str"&gt;"ID"&lt;/span&gt;, &lt;span class="str"&gt;"1"&lt;/span&gt;),&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;                            &lt;span class="kwrd"&gt;new&lt;/span&gt; XAttribute(&lt;span class="str"&gt;"Cmd"&lt;/span&gt;, &lt;span class="str"&gt;"Delete"&lt;/span&gt;),&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;                            &lt;span class="kwrd"&gt;new&lt;/span&gt; XElement(&lt;span class="str"&gt;"Field"&lt;/span&gt;,&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;                                &lt;span class="kwrd"&gt;new&lt;/span&gt; XAttribute(&lt;span class="str"&gt;"Name"&lt;/span&gt;, &lt;span class="str"&gt;"ID"&lt;/span&gt;),&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;                                item_id)));&lt;/pre&gt;&lt;pre class="alt"&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;                Console.WriteLine(&lt;span class="str"&gt;"\n\nDeleting Item to the list . . ."&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;                Console.WriteLine(ws.UpdateListItems(listID, delete_item.GetXmlElement()).OuterXml);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;            }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;            &lt;span class="kwrd"&gt;catch&lt;/span&gt; (TimeoutException timeout)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;            {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;                &lt;span class="rem"&gt;// Handle the timeout exception.&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;                ws.Abort();&lt;/pre&gt;&lt;pre class="alt"&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;catch&lt;/span&gt; (CommunicationException commException)&lt;/pre&gt;&lt;pre class="alt"&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="rem"&gt;// Handle the communication exception.&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;                ws.Abort();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;            }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;        }&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;BTW the web service takes a XmlElement but I like working with the new XElement better. I altered an extension method &lt;a href="http://blogs.msdn.com/ericwhite/archive/2008/12/22/convert-xelement-to-xmlnode-and-convert-xmlnode-to-xelement.aspx" mce_href="http://blogs.msdn.com/ericwhite/archive/2008/12/22/convert-xelement-to-xmlnode-and-convert-xmlnode-to-xelement.aspx"&gt;Eric White&lt;/a&gt; wrote that does the conversion. &lt;/p&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; XmlElement GetXmlElement(&lt;span class="kwrd"&gt;this&lt;/span&gt; XElement element)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;            &lt;span class="kwrd"&gt;using&lt;/span&gt; (XmlReader xmlReader = element.CreateReader())&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;            {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;                XmlDocument xmlDoc = &lt;span class="kwrd"&gt;new&lt;/span&gt; XmlDocument();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;                xmlDoc.Load(xmlReader);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;                &lt;span class="kwrd"&gt;return&lt;/span&gt; xmlDoc.FirstChild &lt;span class="kwrd"&gt;as&lt;/span&gt; XmlElement;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;            }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;        }&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;There are a bunch of libraries out there to aid in this process. The one that has got me the most excited is LINQ to SharePoint &lt;a href="http://www.codeplex.com/LINQtoSharePoint" mce_href="http://www.codeplex.com/LINQtoSharePoint"&gt;http://www.codeplex.com/LINQtoSharePoint&lt;/a&gt;. &lt;/p&gt;&lt;img src="http://www.drowningintechnicaldebt.com/ShawnWeisfeld/aggbug/279.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>sweisfeld</dc:creator>
            <guid>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/archive/2009/02/24/sharepoint-webservice-are-your-friend.aspx</guid>
            <pubDate>Wed, 25 Feb 2009 00:50:00 GMT</pubDate>
            <wfw:comment>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/comments/279.aspx</wfw:comment>
            <comments>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/archive/2009/02/24/sharepoint-webservice-are-your-friend.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/comments/commentRss/279.aspx</wfw:commentRss>
            <trackback:ping>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/services/trackbacks/279.aspx</trackback:ping>
        </item>
        <item>
            <title>WCF &amp;amp; Using Statements</title>
            <link>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/archive/2008/11/13/wcf-amp-using-statements.aspx</link>
            <description>&lt;p mce_keep="true"&gt;I was attending the Dallas Connected Systems UG last night (&lt;a href="http://biztalkusergroup.com/" mce_href="http://biztalkusergroup.com/"&gt;http://biztalkusergroup.com/&lt;/a&gt;) and during the presentation I made the bold assertion that one should NOT use the "using statement" when working with WCF. Now I am a HUGE proponent of the using statement in normal circumstances. IMHO if it implements IDisposable use the using statement, except with WCF. This has to do with the way that WCF errors out and when that happens how the connection gets closed. . . &lt;br /&gt;&lt;br /&gt;Doing my best LeVar Burton "But you don't have to take my word for it" (&lt;a href="http://en.wikipedia.org/wiki/Reading_Rainbow" mce_href="http://en.wikipedia.org/wiki/Reading_Rainbow"&gt;http://en.wikipedia.org/wiki/Reading_Rainbow&lt;/a&gt;). Microsoft even says it in the documentation, "You should not use the using statement (Using in Visual Basic) because it may mask exceptions in certain failure modes. " (&lt;a href="http://msdn.microsoft.com/en-us/library/ms735103.aspx" mce_href="http://msdn.microsoft.com/en-us/library/ms735103.aspx"&gt;http://msdn.microsoft.com/en-us/library/ms735103.aspx&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;Also check out a post by Dan Rigsby that goes into more detail. &lt;a href="http://www.danrigsby.com/blog/index.php/2008/02/26/dont-wrap-wcf-service-hosts-or-clients-in-a-using-statement/" mce_href="http://www.danrigsby.com/blog/index.php/2008/02/26/dont-wrap-wcf-service-hosts-or-clients-in-a-using-statement/"&gt;http://www.danrigsby.com/blog/index.php/2008/02/26/dont-wrap-wcf-service-hosts-or-clients-in-a-using-statement/&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;img src="http://www.drowningintechnicaldebt.com/ShawnWeisfeld/aggbug/271.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>sweisfeld</dc:creator>
            <guid>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/archive/2008/11/13/wcf-amp-using-statements.aspx</guid>
            <pubDate>Thu, 13 Nov 2008 17:29:00 GMT</pubDate>
            <wfw:comment>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/comments/271.aspx</wfw:comment>
            <comments>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/archive/2008/11/13/wcf-amp-using-statements.aspx#feedback</comments>
            <wfw:commentRss>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/comments/commentRss/271.aspx</wfw:commentRss>
            <trackback:ping>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/services/trackbacks/271.aspx</trackback:ping>
        </item>
        <item>
            <title>Forcing Windows Auth on WCF services</title>
            <link>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/archive/2008/04/23/forcing-windows-auth-on-wcf-services.aspx</link>
            <description>&lt;p mce_keep="true"&gt;At the last ONETUG meeting a question came up how to force WCF to use Windows Auth (i.e. Kerberos). By default WCF is in negotiate mode. While this is good for many cases where you cannot ensure that Kerberos will be available if you are in an intranet environment where you know it will be you can speed up your service by skipping the negotiation phase.  Matevz Gacnik has a good sample in his blog (&lt;a href="http://www.request-response.com/blog/PermaLink,guid,4b5f46cd-3c15-4213-9570-1a235c4a615e.aspx"&gt;http://www.request-response.com/blog/PermaLink,guid,4b5f46cd-3c15-4213-9570-1a235c4a615e.aspx&lt;/a&gt;) using certificates, the only change is to set the clientCredentialType to “Windows”.&lt;/p&gt;
&lt;p mce_keep="true"&gt;&amp;lt;bindings&amp;gt;&lt;br /&gt;   &amp;lt;wsHttpBinding&amp;gt;&lt;br /&gt;      &amp;lt;binding name="MySecureBinding"&amp;gt;&lt;br /&gt;         &amp;lt;security mode ="Message"&amp;gt;&lt;br /&gt;            &amp;lt;message clientCredentialType="Windows" negotiateServiceCredential="false"/&amp;gt;&lt;br /&gt;         &amp;lt;/security&amp;gt;&lt;br /&gt;      &amp;lt;/binding&amp;gt;&lt;br /&gt;   &amp;lt;/wsHttpBinding&amp;gt;&lt;br /&gt;&amp;lt;/bindings&amp;gt;&lt;/p&gt;&lt;img src="http://www.drowningintechnicaldebt.com/ShawnWeisfeld/aggbug/245.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>sweisfeld</dc:creator>
            <guid>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/archive/2008/04/23/forcing-windows-auth-on-wcf-services.aspx</guid>
            <pubDate>Wed, 23 Apr 2008 18:26:00 GMT</pubDate>
            <wfw:comment>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/comments/245.aspx</wfw:comment>
            <comments>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/archive/2008/04/23/forcing-windows-auth-on-wcf-services.aspx#feedback</comments>
            <wfw:commentRss>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/comments/commentRss/245.aspx</wfw:commentRss>
            <trackback:ping>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/services/trackbacks/245.aspx</trackback:ping>
        </item>
    </channel>
</rss>
