<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Wiz/dumb : .NET</title><link>http://blogs.msdn.com/pcreehan/archive/tags/.NET/default.aspx</link><description>Tags: .NET</description><dc:language>en</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Fixing the Charset on MIME Messages When Using ADODB.Stream.ReadText</title><link>http://blogs.msdn.com/pcreehan/archive/2009/10/29/fixing-the-charset-on-mime-messages-when-using-adodb-stream-readtext.aspx</link><pubDate>Thu, 29 Oct 2009 20:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9914370</guid><dc:creator>Patrick Creehan</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/pcreehan/comments/9914370.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pcreehan/commentrss.aspx?PostID=9914370</wfw:commentRss><description>&lt;p&gt;We had an issue recently where the customer had written an application to process MIME messages that had body parts encoded with the &lt;a href="http://www.ietf.org/rfc/rfc1489.txt?number=1489"&gt;koi8-r charset&lt;/a&gt;…or at least that’s what it said:&lt;/p&gt;  &lt;pre class="csharpcode"&gt;------_=_NextPart_001_01C9F067.D9742103
Content-Type: text/plain;
    charset=&amp;quot;koi8-r&amp;quot;
Content-Transfer-Encoding: quoted-printable&lt;/pre&gt;

&lt;p&gt;If you use code similar to the following, the resulting characters returned were not correct.&lt;/p&gt;

&lt;div style="padding-bottom: 5px; padding-left: 5px; width: 519px; padding-right: 5px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 5px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:e0cbcb2d-a678-4b8e-a139-0da1ba0ab375" class="wlWriterEditableSmartContent"&gt;
&lt;div style="border: #000080 1px solid; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt;
&lt;div style="background-color: #ffffff; max-height: 300px; overflow: auto; padding: 2px 5px; white-space: nowrap"&gt;
&lt;p&gt;

&lt;span style="color:#0000ff"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff"&gt;string&lt;/span&gt; ReadBodyPart()&lt;br&gt;
{&lt;br&gt;
    CDO.&lt;span style="color:#2b91af"&gt;IDataSource&lt;/span&gt; oIDsrc;&lt;br&gt;
    ADODB.&lt;span style="color:#2b91af"&gt;Stream&lt;/span&gt; objBpStream = &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; ADODB.&lt;span style="color:#2b91af"&gt;Stream&lt;/span&gt;();&lt;br&gt;
    CDO.&lt;span style="color:#2b91af"&gt;Message&lt;/span&gt; objCDOMsg = &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; CDO.&lt;span style="color:#2b91af"&gt;Message&lt;/span&gt;();&lt;br&gt;
    CDO.&lt;span style="color:#2b91af"&gt;IBodyPart&lt;/span&gt; oIBodyPart;&lt;br&gt;
    &lt;br&gt;
    objBpStream.Open(vtMissing, &lt;br&gt;
        ADODB.&lt;span style="color:#2b91af"&gt;ConnectModeEnum&lt;/span&gt;.adModeUnknown,&lt;br&gt;
        ADODB.&lt;span style="color:#2b91af"&gt;StreamOpenOptionsEnum&lt;/span&gt;.adOpenStreamUnspecified, &lt;br&gt;
        &lt;span style="color:#0000ff"&gt;string&lt;/span&gt;.Empty, &lt;br&gt;
        &lt;span style="color:#0000ff"&gt;string&lt;/span&gt;.Empty);&lt;br&gt;
&lt;br&gt;
    objBpStream.LoadFromFile(EML_FILE_PATH);           &lt;br&gt;
    &lt;br&gt;
    oIDsrc = (CDO.&lt;span style="color:#2b91af"&gt;IDataSource&lt;/span&gt;)objCDOMsg;&lt;br&gt;
    &lt;br&gt;
    oIDsrc.OpenObject(objBpStream, &lt;span style="color:#a31515"&gt;"_Stream"&lt;/span&gt;);&lt;br&gt;
&lt;br&gt;
    objBpStream.Close();&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
    oIBodyPart = (CDO.&lt;span style="color:#2b91af"&gt;IBodyPart&lt;/span&gt;)objCDOMsg.TextBodyPart;&lt;br&gt;
    objBpStream = (ADODB.&lt;span style="color:#2b91af"&gt;Stream&lt;/span&gt;)oIBodyPart.GetDecodedContentStream();&lt;br&gt;
    &lt;span style="color:#0000ff"&gt;return&lt;/span&gt; objBpStream.ReadText(-1);&lt;br&gt;
&lt;br&gt;
}
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;The problem is that koi8-r is the &lt;a href="http://msdn.microsoft.com/en-us/library/system.text.encoding.bodyname(VS.85).aspx"&gt;body name&lt;/a&gt; for both “windows-1251” (&lt;a href="http://msdn.microsoft.com/en-us/goglobal/cc305144.aspx"&gt;codepage 1251&lt;/a&gt;) and “koi8-r” (&lt;a href="http://www.ietf.org/rfc/rfc1489.txt?number=1489"&gt;codepage 20866&lt;/a&gt;). I took a look at what the &lt;a href="http://msdn.microsoft.com/en-us/library/ms526935(EXCHG.10).aspx"&gt;TextBody&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/en-us/library/ms527537(EXCHG.10).aspx"&gt;HtmlBody&lt;/a&gt; properties were doing because they can return the characters correctly. Turns out, when the message is loaded, we make an API call to &lt;a href="http://msdn.microsoft.com/en-us/library/aa741015(VS.85).aspx"&gt;GetCharsetInfo&lt;/a&gt; and pass in the value defined in the header. This gives us back a structure that contains the &lt;a href="http://msdn.microsoft.com/en-us/library/aa767878(VS.85).aspx"&gt;uiCodePage&lt;/a&gt; used by &lt;a href="http://msdn.microsoft.com/en-us/library/ms526935(EXCHG.10).aspx"&gt;TextBody&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/en-us/library/ms527537(EXCHG.10).aspx"&gt;HtmlBody&lt;/a&gt; later.&lt;/p&gt;

&lt;p&gt;Fortunately, the .net framework provides methods to do this as well. I simply leverage them to correct the charset I’m given.&lt;/p&gt;

&lt;div style="padding-bottom: 5px; padding-left: 5px; width: 519px; padding-right: 5px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 5px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:c2b19660-5aa6-4101-9a3a-ba8cc4b6ae56" class="wlWriterEditableSmartContent"&gt;
&lt;div style="border: #000080 1px solid; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt;
&lt;div style="background-color: #ffffff; max-height: 300px; overflow: auto; padding: 2px 5px; white-space: nowrap"&gt;
&lt;p&gt;

&lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff"&gt;string&lt;/span&gt; GetCharSetName(&lt;span style="color:#0000ff"&gt;string&lt;/span&gt; bodyName)&lt;br&gt;
{&lt;br&gt;
    &lt;span style="color:#2b91af"&gt;Encoding&lt;/span&gt; encoding = &lt;span style="color:#2b91af"&gt;Encoding&lt;/span&gt;.GetEncoding(bodyName);&lt;br&gt;
    &lt;span style="color:#0000ff"&gt;if&lt;/span&gt; (encoding != &lt;span style="color:#0000ff"&gt;null&lt;/span&gt;)&lt;br&gt;
    {&lt;br&gt;
        &lt;span style="color:#0000ff"&gt;int&lt;/span&gt; iCP = encoding.WindowsCodePage;&lt;br&gt;
        &lt;span style="color:#0000ff"&gt;return&lt;/span&gt; &lt;span style="color:#2b91af"&gt;Encoding&lt;/span&gt;.GetEncoding(iCP).WebName;&lt;br&gt;
    }&lt;br&gt;
    &lt;span style="color:#0000ff"&gt;return&lt;/span&gt; bodyName;&lt;br&gt;
}
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Then I just insert a call to that function above my call to ReadText and we’re good.&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;
  &lt;div style="padding-bottom: 5px; padding-left: 5px; width: 519px; padding-right: 5px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 5px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:f7dac8f9-8241-483c-a229-a0021993acaa" class="wlWriterEditableSmartContent"&gt;
&lt;div style="border: #000080 1px solid; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt;
&lt;div style="background-color: #ffffff; max-height: 300px; overflow: auto; padding: 2px 5px; white-space: nowrap"&gt;
&lt;p&gt;

&lt;span style="color:#0000ff"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff"&gt;string&lt;/span&gt; ReadBodyPart()&lt;br&gt;
{&lt;br&gt;
    CDO.&lt;span style="color:#2b91af"&gt;IDataSource&lt;/span&gt; oIDsrc;&lt;br&gt;
    ADODB.&lt;span style="color:#2b91af"&gt;Stream&lt;/span&gt; objBpStream = &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; ADODB.&lt;span style="color:#2b91af"&gt;Stream&lt;/span&gt;();&lt;br&gt;
    CDO.&lt;span style="color:#2b91af"&gt;Message&lt;/span&gt; objCDOMsg = &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; CDO.&lt;span style="color:#2b91af"&gt;Message&lt;/span&gt;();&lt;br&gt;
    CDO.&lt;span style="color:#2b91af"&gt;IBodyPart&lt;/span&gt; oIBodyPart;&lt;br&gt;
    &lt;br&gt;
    objBpStream.Open(vtMissing, &lt;br&gt;
        ADODB.&lt;span style="color:#2b91af"&gt;ConnectModeEnum&lt;/span&gt;.adModeUnknown,&lt;br&gt;
        ADODB.&lt;span style="color:#2b91af"&gt;StreamOpenOptionsEnum&lt;/span&gt;.adOpenStreamUnspecified, &lt;br&gt;
        &lt;span style="color:#0000ff"&gt;string&lt;/span&gt;.Empty, &lt;br&gt;
        &lt;span style="color:#0000ff"&gt;string&lt;/span&gt;.Empty);&lt;br&gt;
&lt;br&gt;
    objBpStream.LoadFromFile(EML_FILE_PATH);           &lt;br&gt;
    &lt;br&gt;
    oIDsrc = (CDO.&lt;span style="color:#2b91af"&gt;IDataSource&lt;/span&gt;)objCDOMsg;&lt;br&gt;
    &lt;br&gt;
    oIDsrc.OpenObject(objBpStream, &lt;span style="color:#a31515"&gt;"_Stream"&lt;/span&gt;);&lt;br&gt;
&lt;br&gt;
    objBpStream.Close();&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
    oIBodyPart = (CDO.&lt;span style="color:#2b91af"&gt;IBodyPart&lt;/span&gt;)objCDOMsg.TextBodyPart;&lt;br&gt;
    objBpStream = (ADODB.&lt;span style="color:#2b91af"&gt;Stream&lt;/span&gt;)oIBodyPart.GetDecodedContentStream();&lt;br&gt;
    objBpStream.Charset = GetCharSetName(objBpStream.Charset);&lt;br&gt;
    &lt;span style="color:#0000ff"&gt;return&lt;/span&gt; objBpStream.ReadText(-1);&lt;br&gt;
&lt;br&gt;
}
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9914370" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/pcreehan/archive/tags/MIME/default.aspx">MIME</category><category domain="http://blogs.msdn.com/pcreehan/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.msdn.com/pcreehan/archive/tags/DevMsgTeam/default.aspx">DevMsgTeam</category><category domain="http://blogs.msdn.com/pcreehan/archive/tags/CDOSYS/default.aspx">CDOSYS</category><category domain="http://blogs.msdn.com/pcreehan/archive/tags/CDOSYS_2F00_CDOEX/default.aspx">CDOSYS/CDOEX</category></item><item><title>Parsing ServerVersion: When an Int Is Really 5 Ints</title><link>http://blogs.msdn.com/pcreehan/archive/2009/09/21/parsing-serverversion-when-an-int-is-really-5-ints.aspx</link><pubDate>Mon, 21 Sep 2009 18:45:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9897561</guid><dc:creator>Patrick Creehan</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/pcreehan/comments/9897561.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pcreehan/commentrss.aspx?PostID=9897561</wfw:commentRss><description>&lt;p&gt;I recently had a case where a customer was asking how to figure out the mailbox version of a given user using Exchange Web Services (EWS). We noticed there is a node returned in the AutoDiscover response message called ServerVersion, but this value seems pretty opaque. Here’s a snippet from the AutoDiscover POX response from my test server:&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div style="padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:5db1e74e-106d-4e32-a475-a93a8a216f5f" class="wlWriterEditableSmartContent"&gt;
&lt;div style="border: #000080 1px solid; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt;
&lt;div style="background-color: #ffffff; max-height: 300px; overflow: auto; padding: 2px 5px; white-space: nowrap"&gt;
&lt;p&gt;  &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;Protocol&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt; &lt;span style="color:#0000ff"&gt;  &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;Type&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;EXCH&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;Type&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt; &lt;span style="color:#0000ff"&gt;  &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;Server&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;MAILBOXEX7.domain.com&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;Server&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt; &lt;span style="color:#0000ff"&gt;  &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;ServerDN&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;/o=First Organization/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Configuration/cn=Servers/cn=MAILBOXEX7&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;ServerDN&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt; &lt;span style="color:#0000ff"&gt;  &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;ServerVersion&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;720280B0&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;ServerVersion&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt; &lt;span style="color:#0000ff"&gt;  &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;MdbDN&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;/o=First Organization/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Configuration/cn=Servers/cn=MAILBOXEX7/cn=Microsoft Private MDB&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;MdbDN&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt; &lt;span style="color:#0000ff"&gt;  &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;PublicFolderServer&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;MAILBOXEX7.domain.com&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;PublicFolderServer&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt; &lt;span style="color:#0000ff"&gt;  &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;AD&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;domainDC.domain.com&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;AD&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt; &lt;span style="color:#0000ff"&gt;  &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;ASUrl&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;https://casserver.domain.com/EWS/Exchange.asmx&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;ASUrl&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt; &lt;span style="color:#0000ff"&gt;  &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;EwsUrl&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;https://casserver.domain.com/EWS/Exchange.asmx&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;EwsUrl&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt; &lt;span style="color:#0000ff"&gt;  &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;OOFUrl&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;https://casserver.domain.com/EWS/Exchange.asmx&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;OOFUrl&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt; &lt;span style="color:#0000ff"&gt;  &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;UMUrl&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;https://casserver.domain.com/UnifiedMessaging/Service.asmx&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;UMUrl&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt; &lt;span style="color:#0000ff"&gt;  &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;OABUrl&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;https://casserver/OAB/4c44408b-66b7-42d9-8247-316fca26961c/&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;OABUrl&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt; &lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;Protocol&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;  &lt;p&gt;The ServerVersion value returned in AutoDiscover is a 32-bit integer value represented in hexidecimal format (720280B0). The integer by itself doesn’t mean anything. It turns out, this integer is really a serialized structure. Here’s how it breaks down: &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;0x720280B0 (or 1912766640 in decimal) represented in binary is 01110010000000101000000010110000. If we break this binary chunk up into 5 pieces, we’ll see the structure we are after:&lt;/p&gt;  &lt;p&gt;0111&amp;#160; 001000&amp;#160; 000010&amp;#160; 1&amp;#160; 000000010110000&lt;/p&gt;  &lt;p&gt;0111&amp;#160; (7) - The first 4 bits represent a number used for comparison against older version number structures. You can ignore this.&lt;/p&gt;  &lt;p&gt;001000 (8) – The next 6 bits represent the major version number.&lt;/p&gt;  &lt;p&gt;000010 (2) – The next 6 bits represent the minor version number.&lt;/p&gt;  &lt;p&gt;1 (1) – This bit is just a flag that you can ignore.&lt;/p&gt;  &lt;p&gt;000000010110000 (176) – The last 15 bits is the build number.&lt;/p&gt;  &lt;p&gt;So I can see that my server is running build 08.02.0176.&lt;/p&gt;  &lt;p&gt;To parse this value in code is quite easy if you use the binary shift operators. The following sample is in C#, but similar constructs exist in most languages. GetServerVersionIntFromString simply gets the ServerVersion value from the AutoDiscover response body and converts the string value “720280B0” into an unisigned integer using UInt32.Parse&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&lt;span style="color: #2b91af"&gt;UInt32 &lt;/span&gt;intServerVersion = GetServerVersionIntFromString(sb);       &lt;br /&gt;      &lt;br /&gt;&lt;span style="color: blue"&gt;uint &lt;/span&gt;build = intServerVersion &amp;amp; 0x7FFF; &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="color: green"&gt;//get bottom 15 bits        &lt;br /&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;uint &lt;/span&gt;minor = (intServerVersion &amp;gt;&amp;gt; 16) &amp;amp; 0x3F; &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="color: green"&gt;//get 6 bits from 16 bits in        &lt;br /&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;uint &lt;/span&gt;major = (intServerVersion &amp;gt;&amp;gt; 22) &amp;amp; 0x3F; &lt;/font&gt;&lt;span style="color: green"&gt;&lt;font face="Courier New"&gt;//gets 6 bits from 22 bits in        &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;I should point out that in Exchange 2010 and above, a new AutoDiscover option is being made available – AutoDiscover SOAP. If you know you will be targeting an Exchange 2010 server, you can use the SOAP AutoDiscover calls which can return you the server major and minor build numbers in a more easily consumable format.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div style="padding-bottom: 5px; padding-left: 5px; width: 519px; padding-right: 5px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 5px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:6c070350-cc31-48b0-9bdc-d676beaef6b4" class="wlWriterEditableSmartContent"&gt;
&lt;div style="border: #000080 1px solid; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt;
&lt;div style="background-color: #ffffff; max-height: 300px; overflow: auto; padding: 2px 5px; white-space: nowrap"&gt;
&lt;p&gt;  &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;s:Header&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt; &lt;span style="color:#0000ff"&gt;  &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;a:Action&lt;/span&gt;&lt;span style="color:#0000ff"&gt; &lt;/span&gt;&lt;span style="color:#ff0000"&gt;s:mustUnderstand&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;"&lt;span style="color:#0000ff"&gt;1&lt;/span&gt;"&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;http://schemas.microsoft.com/exchange/2010/Autodiscover/Autodiscover/GetUserSettingsResponse&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;a:Action&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt; &lt;span style="color:#0000ff"&gt;  &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;h:ServerVersionInfo&lt;/span&gt;&lt;span style="color:#0000ff"&gt; &lt;/span&gt;&lt;span style="color:#ff0000"&gt;xmlns:h&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;"&lt;span style="color:#0000ff"&gt;http://schemas.microsoft.com/exchange/2010/Autodiscover&lt;/span&gt;"&lt;span style="color:#0000ff"&gt; &lt;/span&gt;&lt;span style="color:#ff0000"&gt;xmlns:i&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;"&lt;span style="color:#0000ff"&gt;http://www.w3.org/2001/XMLSchema-instance&lt;/span&gt;"&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt; &lt;span style="color:#0000ff"&gt;    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;h:MajorVersion&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;14&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;h:MajorVersion&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt; &lt;span style="color:#0000ff"&gt;    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;h:MinorVersion&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;0&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;h:MinorVersion&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt; &lt;span style="color:#0000ff"&gt;    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;h:MajorBuildNumber&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;639&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;h:MajorBuildNumber&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt; &lt;span style="color:#0000ff"&gt;    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;h:MinorBuildNumber&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;20&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;h:MinorBuildNumber&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt; &lt;span style="color:#0000ff"&gt;    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;h:Version&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;Exchange2010&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;h:Version&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt; &lt;span style="color:#0000ff"&gt;  &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;h:ServerVersionInfo&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt; &lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;s:Header&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9897561" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/pcreehan/archive/tags/Exchange/default.aspx">Exchange</category><category domain="http://blogs.msdn.com/pcreehan/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.msdn.com/pcreehan/archive/tags/Exchange+2007/default.aspx">Exchange 2007</category><category domain="http://blogs.msdn.com/pcreehan/archive/tags/Exchange+Web+Services+_2800_EWS_2900_/default.aspx">Exchange Web Services (EWS)</category><category domain="http://blogs.msdn.com/pcreehan/archive/tags/DevMsgTeam/default.aspx">DevMsgTeam</category></item><item><title>Line Breaks in Managed Web Service Proxy Classes</title><link>http://blogs.msdn.com/pcreehan/archive/2009/07/22/line-breaks-in-managed-web-service-proxy-classes.aspx</link><pubDate>Wed, 22 Jul 2009 16:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9844004</guid><dc:creator>Patrick Creehan</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/pcreehan/comments/9844004.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pcreehan/commentrss.aspx?PostID=9844004</wfw:commentRss><description>&lt;p&gt;&lt;a href="http://blogs.msdn.com/mstehle" target="_blank"&gt;Matt&lt;/a&gt;, &lt;a href="http://blogs.msdn.com/rickhall/" target="_blank"&gt;Rick&lt;/a&gt;, and I were working on an issue recently where when an application using EWS would set a contact’s Street address to a value containing a carriage return and line feed, like this:&lt;/p&gt;  &lt;div style="padding-bottom: 5px; padding-left: 5px; width: 519px; padding-right: 5px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 5px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:e582ef6a-2f57-44bf-9a0d-0a69c46a7e60" class="wlWriterEditableSmartContent"&gt;
&lt;div style="border: #000080 1px solid; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt;
&lt;div style="background-color: #ffffff; max-height: auto; overflow: scroll; padding: 2px 5px; white-space: nowrap"&gt;
&lt;p&gt;  physicalAddress.Street = &lt;span style="color:#a31515"&gt;"1234 56 Ave NE&amp;#92;r&amp;#92;nc/oPatrick Creehan"&lt;/span&gt;;
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;  &lt;p&gt;the address card control in Outlook would render it like this:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/pcreehan/WindowsLiveWriter/LineBreaksinManagedWebServiceProxyClasse_FFB2/image_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/pcreehan/WindowsLiveWriter/LineBreaksinManagedWebServiceProxyClasse_FFB2/image_thumb.png" width="244" height="168" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Ugly, right? The problem was that the XMLSerializer would strip out the line feed and leave the carriage return, which the address card didn’t like.&lt;/p&gt;  &lt;p&gt;We could prove by sending raw XML requests in a separate application that sending &amp;amp;#x0d;&amp;amp;#x0a; for the carriage return line feed would make everything right, however, if we set the street address like this:&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div style="padding-bottom: 5px; padding-left: 5px; width: 519px; padding-right: 5px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 5px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:1fc5c445-38f8-4f60-b627-4423e203f45f" class="wlWriterEditableSmartContent"&gt;
&lt;div style="border: #000080 1px solid; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt;
&lt;div style="background-color: #ffffff; max-height: auto; overflow: scroll; padding: 2px 5px; white-space: nowrap"&gt;
&lt;p&gt;  physicalAddress.Street = &lt;span style="color:#a31515"&gt;"1234 56 Ave NE&amp;amp;#x0d;&amp;amp;#x0a;c/oPatrick Creehan"&lt;/span&gt;;
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;  &lt;p&gt;then the contact’s address card would look like this:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/pcreehan/WindowsLiveWriter/LineBreaksinManagedWebServiceProxyClasse_FFB2/image_4.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/pcreehan/WindowsLiveWriter/LineBreaksinManagedWebServiceProxyClasse_FFB2/image_thumb_1.png" width="244" height="170" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Even uglier! It seems that the .net framework, in an attempt to help us out is encoding our string for XML but it wasn’t letting us specify the value we knew was right.&lt;/p&gt;  &lt;p&gt;So – the solution is to implement your own class which can handle the XmlSerialization yourself, and replace the auto-generated proxy class’s decision for the type to yours.&lt;/p&gt;  &lt;p&gt;Here’s my simple class:&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div style="padding-bottom: 5px; padding-left: 5px; width: 519px; padding-right: 5px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 5px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:627acf82-aa7a-47c3-958e-2293295323ee" class="wlWriterEditableSmartContent"&gt;
&lt;div style="border: #000080 1px solid; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt;
&lt;div style="background: #ddd; max-height: 300px; overflow: scroll; padding: 0"&gt;
&lt;ol style="background: #ffffff; margin: 0 0 0 35px; white-space: nowrap"&gt;
&lt;li&gt;     [&lt;span style="color:#2b91af"&gt;SoapTypeAttribute&lt;/span&gt;(Namespace = &lt;span style="color:#a31515"&gt;"http://schemas.microsoft.com/exchange/services/2006/types"&lt;/span&gt;,TypeName=&lt;span style="color:#a31515"&gt;"text"&lt;/span&gt;)]&lt;/li&gt;&lt;li&gt;     &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af"&gt;mstring&lt;/span&gt;:&lt;span style="color:#2b91af"&gt;IXmlSerializable&lt;/span&gt;   &lt;/li&gt;&lt;li&gt;     {&lt;/li&gt;&lt;li&gt;         &lt;span style="color:#0000ff"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff"&gt;string&lt;/span&gt; m_string = &lt;span style="color:#0000ff"&gt;string&lt;/span&gt;.Empty;&lt;/li&gt;&lt;li&gt; &lt;/li&gt;&lt;li&gt;         &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;override&lt;/span&gt; &lt;span style="color:#0000ff"&gt;string&lt;/span&gt; ToString()&lt;/li&gt;&lt;li&gt;         {&lt;/li&gt;&lt;li&gt;             &lt;span style="color:#0000ff"&gt;return&lt;/span&gt; m_string;&lt;/li&gt;&lt;li&gt;         }&lt;/li&gt;&lt;li&gt;         &lt;/li&gt;&lt;li&gt;  &lt;/li&gt;&lt;li&gt;         &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;static&lt;/span&gt; &lt;span style="color:#2b91af"&gt;mstring&lt;/span&gt; CreateMString(&lt;span style="color:#0000ff"&gt;string&lt;/span&gt; str){&lt;/li&gt;&lt;li&gt;             &lt;span style="color:#2b91af"&gt;mstring&lt;/span&gt; newmstring = &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af"&gt;mstring&lt;/span&gt;();&lt;/li&gt;&lt;li&gt;             newmstring.m_string = str;&lt;/li&gt;&lt;li&gt;             &lt;span style="color:#0000ff"&gt;return&lt;/span&gt; newmstring;&lt;/li&gt;&lt;li&gt;         }&lt;/li&gt;&lt;li&gt; &lt;/li&gt;&lt;li&gt;         &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff"&gt;implicit&lt;/span&gt; &lt;span style="color:#0000ff"&gt;operator&lt;/span&gt; &lt;span style="color:#2b91af"&gt;mstring&lt;/span&gt;(&lt;span style="color:#0000ff"&gt;string&lt;/span&gt; str)&lt;/li&gt;&lt;li&gt;         {&lt;/li&gt;&lt;li&gt;             &lt;span style="color:#0000ff"&gt;return&lt;/span&gt; CreateMString(str);&lt;/li&gt;&lt;li&gt;         }&lt;/li&gt;&lt;li&gt; &lt;/li&gt;&lt;li&gt; &lt;/li&gt;&lt;li&gt; &lt;span style="color:#0000ff"&gt;        #region&lt;/span&gt; IXmlSerializable Members&lt;/li&gt;&lt;li&gt; &lt;/li&gt;&lt;li&gt;         &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; System.Xml.Schema.&lt;span style="color:#2b91af"&gt;XmlSchema&lt;/span&gt; GetSchema()&lt;/li&gt;&lt;li&gt;         {&lt;/li&gt;&lt;li&gt;             &lt;span style="color:#0000ff"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; System.Xml.Schema.&lt;span style="color:#2b91af"&gt;XmlSchema&lt;/span&gt;();&lt;/li&gt;&lt;li&gt;         }&lt;/li&gt;&lt;li&gt; &lt;/li&gt;&lt;li&gt;         &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;void&lt;/span&gt; ReadXml(&lt;span style="color:#2b91af"&gt;XmlReader&lt;/span&gt; reader)&lt;/li&gt;&lt;li&gt;         {&lt;/li&gt;&lt;li&gt;             m_string = reader.ReadContentAsString();&lt;/li&gt;&lt;li&gt;         }&lt;/li&gt;&lt;li&gt; &lt;/li&gt;&lt;li&gt;         &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;void&lt;/span&gt; WriteXml(&lt;span style="color:#2b91af"&gt;XmlWriter&lt;/span&gt; writer)&lt;/li&gt;&lt;li&gt;         {&lt;/li&gt;&lt;li&gt;             &lt;span style="color:#0000ff"&gt;string&lt;/span&gt; outString = m_string;&lt;/li&gt;&lt;li&gt;             outString = &lt;span style="color:#2b91af"&gt;HttpUtility&lt;/span&gt;.HtmlEncode(outString);&lt;/li&gt;&lt;li&gt; &lt;/li&gt;&lt;li&gt;             outString = outString.Replace(&lt;span style="color:#a31515"&gt;"&amp;#92;r"&lt;/span&gt;, &lt;span style="color:#a31515"&gt;"&amp;amp;#x0d;"&lt;/span&gt;);&lt;/li&gt;&lt;li&gt;             outString = outString.Replace(&lt;span style="color:#a31515"&gt;"&amp;#92;n"&lt;/span&gt;, &lt;span style="color:#a31515"&gt;"&amp;amp;#x0a;"&lt;/span&gt;);&lt;/li&gt;&lt;li&gt; &lt;/li&gt;&lt;li&gt;             writer.WriteRaw(outString.ToString());&lt;/li&gt;&lt;li&gt;         \&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;A few things to point out is that I decorated this class with the XML namespace for the Exchange Web Services so that it doesn’t fail schema validation. Also, I didn’t really test whether this works when binding to an existing contact – there may be more work needed in the ReadXML section. In order to support still setting the Street property to a string, I had to override the implicit operator. That allows me to set Street to a string even though technically, now Street is an “mstring.” You’ll notice that the work of actually writing the correct value occurs in WriteXml which we got by implementing IXmlSerializable. Now when the SOAP infrastructure goes to build the request, it will call into our interface to serialize this class.&lt;/p&gt;  &lt;p&gt;That reminds me, the last thing you need to do to hook all this up is to go into the web service proxy class Reference.cs and modify the PhysicalAddressDictionaryEntryType so the street properties use your new mstring class instead of string:&lt;/p&gt;  &lt;div style="padding-bottom: 5px; padding-left: 5px; width: 519px; padding-right: 5px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 5px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:c8541ccf-1be2-4f5d-a2d5-246bbfb5f0cc" class="wlWriterEditableSmartContent"&gt;
&lt;div style="border: #000080 1px solid; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt;
&lt;div style="background: #ddd; max-height: 300px; overflow: scroll; padding: 0"&gt;
&lt;ol style="background: #ffffff; margin: 0 0 0 35px; white-space: nowrap"&gt;
&lt;li&gt;     &lt;span style="color:#808080"&gt;///&lt;/span&gt;&lt;span style="color:#008000"&gt; &lt;/span&gt;&lt;span style="color:#808080"&gt;&amp;lt;remarks/&amp;gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;     [System.CodeDom.Compiler.&lt;span style="color:#2b91af"&gt;GeneratedCodeAttribute&lt;/span&gt;(&lt;span style="color:#a31515"&gt;"System.Xml"&lt;/span&gt;, &lt;span style="color:#a31515"&gt;"2.0.50727.4918"&lt;/span&gt;)]&lt;/li&gt;&lt;li&gt;     [System.&lt;span style="color:#2b91af"&gt;SerializableAttribute&lt;/span&gt;()]&lt;/li&gt;&lt;li&gt;     [System.Diagnostics.&lt;span style="color:#2b91af"&gt;DebuggerStepThroughAttribute&lt;/span&gt;()]&lt;/li&gt;&lt;li&gt;     [System.ComponentModel.&lt;span style="color:#2b91af"&gt;DesignerCategoryAttribute&lt;/span&gt;(&lt;span style="color:#a31515"&gt;"code"&lt;/span&gt;)]&lt;/li&gt;&lt;li&gt;     [System.Xml.Serialization.&lt;span style="color:#2b91af"&gt;XmlTypeAttribute&lt;/span&gt;(Namespace=&lt;span style="color:#a31515"&gt;"http://schemas.microsoft.com/exchange/services/2006/types"&lt;/span&gt;)]&lt;/li&gt;&lt;li&gt;     &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;partial&lt;/span&gt; &lt;span style="color:#0000ff"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af"&gt;PhysicalAddressDictionaryEntryType&lt;/span&gt; {&lt;/li&gt;&lt;li&gt;         &lt;/li&gt;&lt;li&gt;         &lt;span style="color:#0000ff"&gt;private&lt;/span&gt; &lt;span style="color:#2b91af"&gt;mstring&lt;/span&gt; streetField;&lt;/li&gt;&lt;li&gt;         &lt;/li&gt;&lt;li&gt;         &lt;span style="color:#0000ff"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff"&gt;string&lt;/span&gt; cityField;&lt;/li&gt;&lt;li&gt;         &lt;/li&gt;&lt;li&gt;         &lt;span style="color:#0000ff"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff"&gt;string&lt;/span&gt; stateField;&lt;/li&gt;&lt;li&gt;         &lt;/li&gt;&lt;li&gt;         &lt;span style="color:#0000ff"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff"&gt;string&lt;/span&gt; countryOrRegionField;&lt;/li&gt;&lt;li&gt;         &lt;/li&gt;&lt;li&gt;         &lt;span style="color:#0000ff"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff"&gt;string&lt;/span&gt; postalCodeField;&lt;/li&gt;&lt;li&gt;         &lt;/li&gt;&lt;li&gt;         &lt;span style="color:#0000ff"&gt;private&lt;/span&gt; &lt;span style="color:#2b91af"&gt;PhysicalAddressKeyType&lt;/span&gt; keyField;&lt;/li&gt;&lt;li&gt;         &lt;/li&gt;&lt;li&gt;         &lt;span style="color:#808080"&gt;///&lt;/span&gt;&lt;span style="color:#008000"&gt; &lt;/span&gt;&lt;span style="color:#808080"&gt;&amp;lt;remarks/&amp;gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;         &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#2b91af"&gt;mstring&lt;/span&gt; Street {&lt;/li&gt;&lt;li&gt;             &lt;span style="color:#0000ff"&gt;get&lt;/span&gt; {&lt;/li&gt;&lt;li&gt;                 &lt;span style="color:#0000ff"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff"&gt;this&lt;/span&gt;.streetField;&lt;/li&gt;&lt;li&gt;             }&lt;/li&gt;&lt;li&gt;             &lt;span style="color:#0000ff"&gt;set&lt;/span&gt; {&lt;/li&gt;&lt;li&gt;                 &lt;span style="color:#0000ff"&gt;this&lt;/span&gt;.streetField = &lt;span style="color:#0000ff"&gt;value&lt;/span&gt;;&lt;/li&gt;&lt;li&gt;             }&lt;/li&gt;&lt;li&gt;         }&lt;/li&gt;&lt;li&gt; &lt;/li&gt;&lt;li&gt;         &lt;span style="color:#808080"&gt;///&lt;/span&gt;&lt;span style="color:#008000"&gt; &lt;/span&gt;&lt;span style="color:#808080"&gt;&amp;lt;remarks/&amp;gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;         &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;string&lt;/span&gt; City {&lt;/li&gt;&lt;li&gt;             &lt;span style="color:#0000ff"&gt;get&lt;/span&gt; {&lt;/li&gt;&lt;li&gt;                 &lt;span style="color:#0000ff"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff"&gt;this&lt;/span&gt;.cityField;&lt;/li&gt;&lt;li&gt;             }&lt;/li&gt;&lt;li&gt;             &lt;span style="color:#0000ff"&gt;set&lt;/span&gt; {&lt;/li&gt;&lt;li&gt;                 &lt;span style="color:#0000ff"&gt;this&lt;/span&gt;.cityField = &lt;span style="color:#0000ff"&gt;value&lt;/span&gt;;&lt;/li&gt;&lt;li&gt;             }&lt;/li&gt;&lt;li&gt;         }&lt;/li&gt;&lt;li&gt;         &lt;/li&gt;&lt;li&gt;         &lt;span style="color:#808080"&gt;///&lt;/span&gt;&lt;span style="color:#008000"&gt; &lt;/span&gt;&lt;span style="color:#808080"&gt;&amp;lt;remarks/&amp;gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;         &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;string&lt;/span&gt; State {&lt;/li&gt;&lt;li&gt;             &lt;span style="color:#0000ff"&gt;get&lt;/span&gt; {&lt;/li&gt;&lt;li&gt;                 &lt;span style="color:#0000ff"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff"&gt;this&lt;/span&gt;.stateField;&lt;/li&gt;&lt;li&gt;             }&lt;/li&gt;&lt;li&gt;             &lt;span style="color:#0000ff"&gt;set&lt;/span&gt; {&lt;/li&gt;&lt;li&gt;                 &lt;span style="color:#0000ff"&gt;this&lt;/span&gt;.stateField = &lt;span style="color:#0000ff"&gt;value&lt;/span&gt;;&lt;/li&gt;&lt;li&gt;             }&lt;/li&gt;&lt;li&gt;         }&lt;/li&gt;&lt;li&gt;         &lt;/li&gt;&lt;li&gt;         &lt;span style="color:#808080"&gt;///&lt;/span&gt;&lt;span style="color:#008000"&gt; &lt;/span&gt;&lt;span style="color:#808080"&gt;&amp;lt;remarks/&amp;gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;         &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;string&lt;/span&gt; CountryOrRegion {&lt;/li&gt;&lt;li&gt;             &lt;span style="color:#0000ff"&gt;get&lt;/span&gt; {&lt;/li&gt;&lt;li&gt;                 &lt;span style="color:#0000ff"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff"&gt;this&lt;/span&gt;.countryOrRegionField;&lt;/li&gt;&lt;li&gt;             }&lt;/li&gt;&lt;li&gt;             &lt;span style="color:#0000ff"&gt;set&lt;/span&gt; {&lt;/li&gt;&lt;li&gt;                 &lt;span style="color:#0000ff"&gt;this&lt;/span&gt;.countryOrRegionField = &lt;span style="color:#0000ff"&gt;value&lt;/span&gt;;&lt;/li&gt;&lt;li&gt;             }&lt;/li&gt;&lt;li&gt;         }&lt;/li&gt;&lt;li&gt;         &lt;/li&gt;&lt;li&gt;         &lt;span style="color:#808080"&gt;///&lt;/span&gt;&lt;span style="color:#008000"&gt; &lt;/span&gt;&lt;span style="color:#808080"&gt;&amp;lt;remarks/&amp;gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;         &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;string&lt;/span&gt; PostalCode {&lt;/li&gt;&lt;li&gt;             &lt;span style="color:#0000ff"&gt;get&lt;/span&gt; {&lt;/li&gt;&lt;li&gt;                 &lt;span style="color:#0000ff"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff"&gt;this&lt;/span&gt;.postalCodeField;&lt;/li&gt;&lt;li&gt;             }&lt;/li&gt;&lt;li&gt;             &lt;span style="color:#0000ff"&gt;set&lt;/span&gt; {&lt;/li&gt;&lt;li&gt;                 &lt;span style="color:#0000ff"&gt;this&lt;/span&gt;.postalCodeField = &lt;span style="color:#0000ff"&gt;value&lt;/span&gt;;&lt;/li&gt;&lt;li&gt;             }&lt;/li&gt;&lt;li&gt;         }&lt;/li&gt;&lt;li&gt;         &lt;/li&gt;&lt;li&gt;         &lt;span style="color:#808080"&gt;///&lt;/span&gt;&lt;span style="color:#008000"&gt; &lt;/span&gt;&lt;span style="color:#808080"&gt;&amp;lt;remarks/&amp;gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;         [System.Xml.Serialization.&lt;span style="color:#2b91af"&gt;XmlAttributeAttribute&lt;/span&gt;()]&lt;/li&gt;&lt;li&gt;         &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#2b91af"&gt;PhysicalAddressKeyType&lt;/span&gt; Key {&lt;/li&gt;&lt;li&gt;             &lt;span style="color:#0000ff"&gt;get&lt;/span&gt; {&lt;/li&gt;&lt;li&gt;                 &lt;span style="color:#0000ff"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff"&gt;this&lt;/span&gt;.keyField;&lt;/li&gt;&lt;li&gt;             }&lt;/li&gt;&lt;li&gt;             &lt;span style="color:#0000ff"&gt;set&lt;/span&gt; {&lt;/li&gt;&lt;li&gt;                 &lt;span style="color:#0000ff"&gt;this&lt;/span&gt;.keyField = &lt;span style="color:#0000ff"&gt;value&lt;/span&gt;;&lt;/li&gt;&lt;li&gt;             }&lt;/li&gt;&lt;li&gt;         }&lt;/li&gt;&lt;li&gt;     \&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;  &lt;p&gt;and (after removing the email address so the address will fit on the card) it looks like this:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/pcreehan/WindowsLiveWriter/LineBreaksinManagedWebServiceProxyClasse_FFB2/image_6.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/pcreehan/WindowsLiveWriter/LineBreaksinManagedWebServiceProxyClasse_FFB2/image_thumb_2.png" width="244" height="144" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Cake.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9844004" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/pcreehan/archive/tags/Outlook/default.aspx">Outlook</category><category domain="http://blogs.msdn.com/pcreehan/archive/tags/Exchange/default.aspx">Exchange</category><category domain="http://blogs.msdn.com/pcreehan/archive/tags/Outlook+2007/default.aspx">Outlook 2007</category><category domain="http://blogs.msdn.com/pcreehan/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.msdn.com/pcreehan/archive/tags/Exchange+2007/default.aspx">Exchange 2007</category><category domain="http://blogs.msdn.com/pcreehan/archive/tags/Exchange+Web+Services+_2800_EWS_2900_/default.aspx">Exchange Web Services (EWS)</category><category domain="http://blogs.msdn.com/pcreehan/archive/tags/DevMsgTeam/default.aspx">DevMsgTeam</category></item><item><title>Misha Shneerson : COM Interop: Handling events has side effects</title><link>http://blogs.msdn.com/pcreehan/archive/2008/10/22/misha-shneerson-com-interop-handling-events-has-side-effects.aspx</link><pubDate>Wed, 22 Oct 2008 16:04:09 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9011064</guid><dc:creator>Patrick Creehan</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/pcreehan/comments/9011064.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pcreehan/commentrss.aspx?PostID=9011064</wfw:commentRss><description>&lt;p&gt; Misha, a Senior Dev on the VSTO team just posted this blog describing why handling events in managed code can be problematic. This is not news to our team, but he provides a good explanation of why it’s problematic. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/mshneer/archive/2008/10/18/com-interop-handling-events-has-side-effects.aspx"&gt;Misha Shneerson : COM Interop: Handling events has side effects&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;If any of what he says sounds familiar, it’s because our own &lt;a href="http://blogs.msdn.com/mstehle"&gt;Matt Stehle&lt;/a&gt; has been talking about this &lt;a href="http://blogs.msdn.com/mstehle/archive/2008/06/12/oom-net-part-5-event-planning.aspx"&gt;for a while&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9011064" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/pcreehan/archive/tags/Outlook/default.aspx">Outlook</category><category domain="http://blogs.msdn.com/pcreehan/archive/tags/VSTO/default.aspx">VSTO</category><category domain="http://blogs.msdn.com/pcreehan/archive/tags/Outlook+Object+Model/default.aspx">Outlook Object Model</category><category domain="http://blogs.msdn.com/pcreehan/archive/tags/Outlook+2007/default.aspx">Outlook 2007</category><category domain="http://blogs.msdn.com/pcreehan/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.msdn.com/pcreehan/archive/tags/DevMsgTeam/default.aspx">DevMsgTeam</category></item><item><title>Why Pickups are the Best. More Robust, More Reliable, etc.</title><link>http://blogs.msdn.com/pcreehan/archive/2008/08/08/why-pickups-are-the-best-more-robust-more-reliable-etc.aspx</link><pubDate>Fri, 08 Aug 2008 15:58:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8843455</guid><dc:creator>Patrick Creehan</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/pcreehan/comments/8843455.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pcreehan/commentrss.aspx?PostID=8843455</wfw:commentRss><description>&lt;H4&gt;&lt;/H4&gt;
&lt;H4&gt;&lt;/H4&gt;
&lt;P mce_keep="true"&gt;We get calls about this all the time. You have a CDOSYS application that…what? No, I’m not talking about automobiles, why did you…oh, the title. Well, it’s true. Read on.&lt;/P&gt;
&lt;H4&gt;The Dreaded Transport Error&lt;/H4&gt;
&lt;P&gt;The problem we see more than any other is when a customer is trying to send a lot of e-mail using an SMTP API such as CDOEX, CDOSYS, or System.Web.Mail, they will start to get &lt;A href="http://msdn.microsoft.com/en-us/library/ms526287(EXCHG.10).aspx" mce_href="http://msdn.microsoft.com/en-us/library/ms526287(EXCHG.10).aspx"&gt;CDO_E_FAILED_TO_CONNECT&lt;/A&gt; errors (0x80040213) (-2147220973) which is “The transport could not connect to the server.”&lt;/P&gt;
&lt;H4&gt;The Resolution&lt;/H4&gt;
&lt;P&gt;We see it over and over again. This error is because you are sending such a high volume of email over one port, typically the default port&amp;nbsp;(25), that you flood the port with traffic until your app can no longer talk to the server. If your application is sending such a large volume of mail so quickly that it generates this error, it’s time to install a local SMTP service (if one is not already installed) and start sending via port.&lt;/P&gt;
&lt;P&gt;&lt;A title="Setting the Send and Post Method" href="http://msdn.microsoft.com/en-us/library/ms527014(EXCHG.10).aspx" mce_href="http://msdn.microsoft.com/en-us/library/ms527014(EXCHG.10).aspx"&gt;Setting the Send and Post Method&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A title="Sending or Posting using the Pickup Directory" href="http://msdn.microsoft.com/en-us/library/ms526208(EXCHG.10).aspx" mce_href="http://msdn.microsoft.com/en-us/library/ms526208(EXCHG.10).aspx"&gt;Sending or Posting using the Pickup Directory&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A title="How To Send HTML Formatted Mail Using CDO for Windows 2000 and the" href="http://support.microsoft.com/kb/286430" mce_href="http://support.microsoft.com/kb/286430"&gt;How To Send HTML Formatted Mail Using CDO for Windows 2000 and the Local Pickup Directory&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;You can employ the same strategy in the article above to your System.Web.Mail emails:&lt;/P&gt;
&lt;P&gt;&lt;A title="How to send e-mail messages by using CDOSYS and the local SMTP directory with VB.NET" href="http://support.microsoft.com/kb/313773" mce_href="http://support.microsoft.com/kb/313773"&gt;How to send e-mail messages by using CDOSYS and the local SMTP pickup directory with VB.NET&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A title=http://support.microsoft.com/kb/310212/en-us href="http://support.microsoft.com/kb/310212/en-us" mce_href="http://support.microsoft.com/kb/310212/en-us"&gt;How to use the Cdosys.dll library to send an e-mail message with attachments by using Visual C#&lt;/A&gt; (this also shows how to send using pickup)&lt;/P&gt;
&lt;H4&gt;Benefits of using the pickup folder&lt;/H4&gt;
&lt;H5&gt;Performance &lt;/H5&gt;
&lt;P&gt;It is very easy to generate a text file on the file system. When your CDOSYS configuration is set to send via pickup, all CDOSYS is doing in your application is creating an .eml file in a specific directory. You’ve just removed the entire networking stack from your application. You can whip through email generation in a fraction of the time it takes to communicate over a TCP port.&lt;/P&gt;
&lt;H5&gt;Reliability&lt;/H5&gt;
&lt;P&gt;When you let the SMTP service do the sending of your emails, you are working on a far more stable architecture than for you to handle error conditions yourself in your application. IIS’s SMTP service makes it easy when there is a problem as well by just moving your .eml file to the BadMail folder. If the service runs into a problem where transport is too busy to take new connections, it just tries again later. Email is asynchronous by nature, so this shouldn’t be a big deal. &lt;/P&gt;
&lt;H5&gt;Resiliency&lt;/H5&gt;
&lt;P mce_keep="true"&gt;The SMTP service will just continually monitor the Pickup folder for any files in it and will try to send them. If there’s a power failure for example, or your machine crashes, when it reboots, the files are still there so the service will once again work on sending them. &lt;/P&gt;
&lt;H4&gt;When You Shouldn’t Use Pickup&lt;/H4&gt;
&lt;P&gt;If it is impossible for you to install a local SMTP service for whatever reason, sending via port may be your only option. For example, if you are writing an application to run on a desktop running Windows XP/Vista, it doesn’t make sense to install an SMTP service on a desktop platform. Additionally, if your application only sends an email occasionally, it will probably be fine to send using port instead of pickup – you’ll probably never run into this error. If you application does need to know immediately whether or not the email is going to succeed in each command in the protocol (MAIL FROM, RCPTTO, etc) then you may need to send via port as well. In those cases, if you will be sending a large volume of email very quickly, you should throttle your application to allow some time between each mail so that you don’t clog the pipes and end up with the dreaded transport error. This is, of course, assuming that you can’t install SMTP services locally.&lt;/P&gt;
&lt;P&gt;Another reason you may not code your application to use a pickup folder is that you don’t know the environment your application will be deployed on. For example, you’ve written a web application that sends email notifications when some data has changed and you’re going to sell this application for companies to deploy in their own environments. You don’t know, nor can you count on an SMTP service running locally on the box. Your first instinct may be to code your application to send via port. Certainly, they’ll have an SMTP service &lt;EM&gt;somewhere&lt;/EM&gt; in the organization and it’s easy for them to just type in a setting somewhere “mail.company.com” – folks are used to it by now. My plea to you is to account for both possibilities. Provide a mechanism for sending via pickup as well – you won’t regret it. &lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8843455" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/pcreehan/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.msdn.com/pcreehan/archive/tags/DevMsgTeam/default.aspx">DevMsgTeam</category><category domain="http://blogs.msdn.com/pcreehan/archive/tags/CDOSYS/default.aspx">CDOSYS</category><category domain="http://blogs.msdn.com/pcreehan/archive/tags/CDOSYS_2F00_CDOEX/default.aspx">CDOSYS/CDOEX</category></item><item><title>Form Region Leak in Visual Studio Tools for Office 2008 (v3) Template</title><link>http://blogs.msdn.com/pcreehan/archive/2008/08/07/form-region-leak-in-visual-studio-tools-for-office-2008-v3-template.aspx</link><pubDate>Fri, 08 Aug 2008 00:03:24 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8841695</guid><dc:creator>Patrick Creehan</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.msdn.com/pcreehan/comments/8841695.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pcreehan/commentrss.aspx?PostID=8841695</wfw:commentRss><description>&lt;p&gt;I had a case on this a few months ago, but thought more folks might run into this as they start moving to form regions. By default, if you use the VSTO template for creating a form region in Outlook, the item is leaked. This can show up in a number of different symptoms, but the one we saw was that when the item was created (then saved and closed), then modified in WebDav, then they tried to modify the item again in Outlook, the user would get the error:&lt;/p&gt;  &lt;p&gt;&amp;quot;The item cannot be saved because it was changed by another user or in a another window.&amp;quot;&lt;/p&gt;  &lt;p&gt;Fortunately, the resolution is easy, you just need to add a call to Marshal.ReleaseComObject to the FormRegionInitializing event in the designer code.&lt;/p&gt; &lt;code&gt;private void FormRegion1Factory_FormRegionInitializing(object sender, Microsoft.Office.Tools.Outlook.FormRegionInitializingEventArgs e)    &lt;br /&gt;{     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Marshal.ReleaseComObject(e.OutlookItem);     &lt;br /&gt;} &lt;/code&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8841695" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/pcreehan/archive/tags/VSTO/default.aspx">VSTO</category><category domain="http://blogs.msdn.com/pcreehan/archive/tags/Outlook+2007/default.aspx">Outlook 2007</category><category domain="http://blogs.msdn.com/pcreehan/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.msdn.com/pcreehan/archive/tags/DevMsgTeam/default.aspx">DevMsgTeam</category></item><item><title>STSSync for the Masses: Toub's Revenge</title><link>http://blogs.msdn.com/pcreehan/archive/2008/04/08/stssync-for-the-masses-toub-s-revenge.aspx</link><pubDate>Tue, 08 Apr 2008 21:13:12 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8369546</guid><dc:creator>Patrick Creehan</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/pcreehan/comments/8369546.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pcreehan/commentrss.aspx?PostID=8369546</wfw:commentRss><description>&lt;p&gt;Many of you have been using the Custom Calendar Provider samples created by Stephen Toub and I:&lt;/p&gt;  &lt;p&gt;&lt;a title="Stephen Toub - Custom Calendar Providers for Outlook 2003" href="http://blogs.msdn.com/toub/archive/2004/05/22/139609.aspx"&gt;Stephen Toub - Custom Calendar Providers for Outlook 2003&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="dumb - Custom Calendar Providers for Outlook 2007" href="http://blogs.msdn.com/pcreehan/archive/2006/11/21/custom-calendar-providers-for-outlook-2007.aspx"&gt;Custom Calendar Providers for Outlook 2007&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The development team has finally documented pretty much everything you need to know in order to build your own STSSync provider (to replace SharePoint as our code samples do). The documentation is included in many of the newly documented &lt;a href="http://msdn2.microsoft.com/en-us/library/cc203350.aspx"&gt;Open Protocol specifications&lt;/a&gt;:&lt;/p&gt;  &lt;p&gt;&lt;a title="[MS-OUTSPS]" href="http://msdn2.microsoft.com/en-us/library/cc313169.aspx"&gt;[MS-OUTSPS] Lists Client Sync Protocol Specification&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I'm excited to see what you do with this!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8369546" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/pcreehan/archive/tags/Outlook/default.aspx">Outlook</category><category domain="http://blogs.msdn.com/pcreehan/archive/tags/Outlook+2007/default.aspx">Outlook 2007</category><category domain="http://blogs.msdn.com/pcreehan/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.msdn.com/pcreehan/archive/tags/STSSync/default.aspx">STSSync</category><category domain="http://blogs.msdn.com/pcreehan/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blogs.msdn.com/pcreehan/archive/tags/DevMsgTeam/default.aspx">DevMsgTeam</category></item><item><title>Outlook Crashes When Using Outlook Object Model in Multiple Threads</title><link>http://blogs.msdn.com/pcreehan/archive/2008/03/13/outlook-crashes-when-using-outlook-object-model-in-multiple-threads.aspx</link><pubDate>Thu, 13 Mar 2008 19:11:11 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8181574</guid><dc:creator>Patrick Creehan</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/pcreehan/comments/8181574.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pcreehan/commentrss.aspx?PostID=8181574</wfw:commentRss><description>&lt;p&gt;One of the major requirements most developers are up against these days is ensuring their code runs as fast as possible. No one likes to wait for an application to run, they want seamless, invisible, instant speed. Multithreading is becoming more popular now that many desktops and certainly most servers are shipping with multiple processors or multiple cores. By spinning up multiple threads to execute many different code-paths simultaneously, you can certainly increase the performance of your application.&lt;/p&gt;  &lt;p&gt;This mentality is ever-increasingly being blended into Outlook development as well. There has been a rash of developers in recent months who are reporting problems with their Outlook add-ins crashing Outlook when doing multi-threading. While it may give the perception of a better performing add-in, the reality is that this really isn't going to help, nor will it work.&lt;/p&gt;  &lt;p&gt;Outlook Object Model is run in a &lt;a href="http://msdn2.microsoft.com/en-us/library/ms680112.aspx" target="_blank"&gt;STA&lt;/a&gt; COM server. This means that all OOM calls are executed on the main thread. If you are building an add-in that is making OOM calls from another thread (other than the main thread), then your calls need to be properly marshaled back to thread 0. For unmanaged code, you should use &lt;a href="http://msdn2.microsoft.com/en-us/library/ms678428(VS.85).aspx" target="_blank"&gt;CoMarshalInterface&lt;/a&gt; or &lt;a href="http://msdn2.microsoft.com/en-us/library/ms693316(VS.85).aspx" target="_blank"&gt;CoMarshalInterThreadInterfaceInStream&lt;/a&gt; to marshal your object pointer across threads. This will ensure your OOM calls are properly executed on thread 0. If you are writing managed code, using the OOM through COM interop by means of the PIA will actually handle this marshalling for you. &lt;/p&gt;  &lt;p&gt;All of this talk about marshalling interfaces back to the main thread begs the question, &amp;quot;What's the point?&amp;quot; If the OOM calls need to run on thread 0, why spin up a new thread to do OOM work in the first place? That's a great question. You don't gain any performance because all the calls are going to run on the same thread anyway &lt;em&gt;and&lt;/em&gt; you incur the overhead hit of doing the marshaling to begin with, so there's not really an advantage to multithreading Outlook Object Model. &lt;/p&gt;  &lt;p&gt;Here are some links to some smart folks talking about this same thing:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://weblogs.asp.net/whaggard/archive/2008/02/04/all-outlook-object-model-calls-run-on-the-main-thread.aspx" href="http://weblogs.asp.net/whaggard/archive/2008/02/04/all-outlook-object-model-calls-run-on-the-main-thread.aspx" target="_blank"&gt;All Outlook object model calls run on the main thread&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1858663&amp;amp;SiteID=1" href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1858663&amp;amp;SiteID=1" target="_blank"&gt;Threading in an Outlook Addin&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="Add-in threading issue causes Outlook to crash or hang" href="http://www.outlookcode.com/article.aspx?id=71" target="_blank"&gt;Add-in threading issue causes Outlook to crash or hang&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8181574" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/pcreehan/archive/tags/Outlook/default.aspx">Outlook</category><category domain="http://blogs.msdn.com/pcreehan/archive/tags/Outlook+Object+Model/default.aspx">Outlook Object Model</category><category domain="http://blogs.msdn.com/pcreehan/archive/tags/Outlook+2007/default.aspx">Outlook 2007</category><category domain="http://blogs.msdn.com/pcreehan/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.msdn.com/pcreehan/archive/tags/DevMsgTeam/default.aspx">DevMsgTeam</category></item><item><title>Stehle's finally doing his OOM series</title><link>http://blogs.msdn.com/pcreehan/archive/2007/12/07/stehle-s-finally-doing-his-oom-series.aspx</link><pubDate>Fri, 07 Dec 2007 15:54:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6692649</guid><dc:creator>Patrick Creehan</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/pcreehan/comments/6692649.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pcreehan/commentrss.aspx?PostID=6692649</wfw:commentRss><description>&lt;P&gt;I've been encouraging him to blog his "Matt Stehle's Tenents of OOM Programming" for a while now, and he's finally begun with a series on some common pitfalls we see with developers using OOM in .NET. This &lt;A class="" href="http://blogs.msdn.com/mstehle/archive/2007/12/06/oom-net-part-1-introduction-why-events-stop-firing.aspx" mce_href="http://blogs.msdn.com/mstehle/archive/2007/12/06/oom-net-part-1-introduction-why-events-stop-firing.aspx"&gt;first article&lt;/A&gt;&amp;nbsp;is concerned with a common reason we see for events to stop firing in your VSTO add-ins.&lt;/P&gt;
&lt;P&gt;Rock on Stehle-E-O!&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6692649" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/pcreehan/archive/tags/VSTO/default.aspx">VSTO</category><category domain="http://blogs.msdn.com/pcreehan/archive/tags/Outlook+Object+Model/default.aspx">Outlook Object Model</category><category domain="http://blogs.msdn.com/pcreehan/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.msdn.com/pcreehan/archive/tags/DevMsgTeam/default.aspx">DevMsgTeam</category></item><item><title>HOWTO: Get Email Messages from Exchange to SharePoint</title><link>http://blogs.msdn.com/pcreehan/archive/2007/02/06/howto-get-email-messages-from-exchange-to-sharepoint.aspx</link><pubDate>Tue, 06 Feb 2007 19:15:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1612528</guid><dc:creator>Patrick Creehan</dc:creator><slash:comments>19</slash:comments><comments>http://blogs.msdn.com/pcreehan/comments/1612528.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pcreehan/commentrss.aspx?PostID=1612528</wfw:commentRss><description>&lt;P&gt;Many people ask about how to do this, so I thought I'd write up a sample. This sample basically searches the inbox of a user and then does an HTTP GET against the DAV:href to get the EML file and then does an HTTP PUT to upload it to a SharePoint document library.&lt;/P&gt;&lt;CODE&gt;&lt;FONT color=#0000ff size=2&gt;&lt;BR&gt;using&lt;/FONT&gt;&lt;FONT size=2&gt; System; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;BR&gt;using&lt;/FONT&gt;&lt;FONT size=2&gt; System.Web; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;BR&gt;using&lt;/FONT&gt;&lt;FONT size=2&gt; System.Xml; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;BR&gt;using&lt;/FONT&gt;&lt;FONT size=2&gt; System.Net; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;BR&gt;using&lt;/FONT&gt;&lt;FONT size=2&gt; System.Text; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;BR&gt;namespace&lt;/FONT&gt;&lt;FONT size=2&gt; UploadEmlToSharePoint&amp;nbsp;&lt;BR&gt;{&amp;nbsp;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;///&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&amp;lt;summary&amp;gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;///&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt; Summary description for Class1.&amp;nbsp;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;///&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&amp;lt;/summary&amp;gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;class&lt;/FONT&gt;&lt;FONT size=2&gt; Class1&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;static&lt;/FONT&gt;&lt;FONT size=2&gt; System.Net.CredentialCache MyCredentialCache;&amp;nbsp;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;///&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&amp;lt;summary&amp;gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;///&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt; The main entry point for the application.&amp;nbsp;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;///&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&amp;lt;/summary&amp;gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [STAThread]&amp;nbsp;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;static&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;void&lt;/FONT&gt;&lt;FONT size=2&gt; Main(&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;string&lt;/FONT&gt;&lt;FONT size=2&gt;[] args)&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Net.HttpWebRequest Request;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Net.WebResponse Response;&amp;nbsp;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;string&lt;/FONT&gt;&lt;FONT size=2&gt; strRootURI = "http://exchangeserver/exchange/User1/Inbox/";&amp;nbsp;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;string&lt;/FONT&gt;&lt;FONT size=2&gt; strSPSRootURI = "http://wss/Shared%20Documents/";&amp;nbsp;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;string&lt;/FONT&gt;&lt;FONT size=2&gt; strUserName = "User1";&amp;nbsp;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;string&lt;/FONT&gt;&lt;FONT size=2&gt; strPassword = "Passw0rd";&amp;nbsp;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;string&lt;/FONT&gt;&lt;FONT size=2&gt; strDomain = "DOMAIN";&amp;nbsp;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;string&lt;/FONT&gt;&lt;FONT size=2&gt; strQuery ="";&amp;nbsp;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;byte&lt;/FONT&gt;&lt;FONT size=2&gt;[] bytes = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;null&lt;/FONT&gt;&lt;FONT size=2&gt;;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.IO.Stream RequestStream = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;null&lt;/FONT&gt;&lt;FONT size=2&gt;;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.IO.Stream ResponseStream = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;null&lt;/FONT&gt;&lt;FONT size=2&gt;;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; XmlDocument ResponseXmlDoc = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;null&lt;/FONT&gt;&lt;FONT size=2&gt;;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; XmlNodeList ResponseNodes = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;null&lt;/FONT&gt;&lt;FONT size=2&gt;;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; XmlNamespaceManager xmlnsm = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;FONT size=2&gt; XmlNamespaceManager(&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;FONT size=2&gt; NameTable());&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlnsm.AddNamespace("a","DAV:");&amp;nbsp;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;try&amp;nbsp;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;// Build the SQL query.&amp;nbsp;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; strQuery = "&amp;lt;?xml version=\"1.0\"?&amp;gt;&amp;lt;D:searchrequest xmlns:D = \"DAV:\" &amp;gt;"&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + "&amp;lt;D:sql&amp;gt;SELECT \"DAV:displayname\" FROM \"" + strRootURI + "\""&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;+ "WHERE \"DAV:ishidden\" = false AND \"DAV:isfolder\" = false"&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + "&amp;lt;/D:sql&amp;gt;&amp;lt;/D:searchrequest&amp;gt;";&amp;nbsp;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;// Create a new CredentialCache object and fill it with the network&amp;nbsp;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;// credentials required to access the server.&amp;nbsp;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MyCredentialCache = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;FONT size=2&gt; System.Net.CredentialCache();&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MyCredentialCache.Add( &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;FONT size=2&gt; System.Uri(strRootURI),&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "NTLM",&amp;nbsp;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;new&lt;/FONT&gt;&lt;FONT size=2&gt; System.Net.NetworkCredential(strUserName, strPassword, strDomain)&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MyCredentialCache.Add(&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;FONT size=2&gt; System.Uri(strSPSRootURI),&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "NTLM",&amp;nbsp;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;new&lt;/FONT&gt;&lt;FONT size=2&gt; System.Net.NetworkCredential(strUserName, strPassword, strDomain));&amp;nbsp;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;// Create the HttpWebRequest object.&amp;nbsp;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Request = (System.Net.HttpWebRequest)HttpWebRequest.Create(strRootURI);&amp;nbsp;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;// Add the network credentials to the request.&amp;nbsp;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Request.Credentials = MyCredentialCache;&amp;nbsp;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;// Specify the method.&amp;nbsp;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Request.Method = "SEARCH";&amp;nbsp;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;// Encode the body using UTF-8.&amp;nbsp;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bytes = Encoding.UTF8.GetBytes((&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;string&lt;/FONT&gt;&lt;FONT size=2&gt;)strQuery);&amp;nbsp;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;// Set the content header length. This must be&amp;nbsp;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;// done before writing data to the request stream.&amp;nbsp;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Request.ContentLength = bytes.Length;&amp;nbsp;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;//Set the translate header to false&amp;nbsp;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Request.Headers.Add("Translate","f");&amp;nbsp;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;// Get a reference to the request stream.&amp;nbsp;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RequestStream = Request.GetRequestStream();&amp;nbsp;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;// Write the SQL query to the request stream.&amp;nbsp;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RequestStream.Write(bytes, 0, bytes.Length);&amp;nbsp;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;// Close the Stream object to release the connection&amp;nbsp;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;// for further use.&amp;nbsp;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RequestStream.Close();&amp;nbsp;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;// Set the content type header.&amp;nbsp;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Request.ContentType = "text/xml";&amp;nbsp;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;// Send the SEARCH method request and get the&amp;nbsp;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;// response from the server.&amp;nbsp;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Response = (HttpWebResponse)Request.GetResponse();&amp;nbsp;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;// Get the XML response stream.&amp;nbsp;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ResponseStream = Response.GetResponseStream();&amp;nbsp;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;// Create the XmlDocument object from the XML response stream.&amp;nbsp;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ResponseXmlDoc = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;FONT size=2&gt; XmlDocument();&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ResponseXmlDoc.Load(ResponseStream); 
&lt;P mce_keep="true"&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ResponseNodes = ResponseXmlDoc.GetElementsByTagName("a:response");&amp;nbsp;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;if&lt;/FONT&gt;&lt;FONT size=2&gt;(ResponseNodes.Count &amp;gt; 0)&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("Non-folder item hrefs...");&amp;nbsp;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;// Loop through the display name nodes.&amp;nbsp;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;for&lt;/FONT&gt;&lt;FONT size=2&gt;(&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;int&lt;/FONT&gt;&lt;FONT size=2&gt; i=0; i&amp;lt;ResponseNodes.Count; i++)&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;// Display the non-folder item displayname.&amp;nbsp;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; XmlNode responseNode = ResponseNodes[i];&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; XmlNode hrefNode = responseNode.SelectSingleNode("a:href",xmlnsm);&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; XmlNode displayNameNode = responseNode.SelectSingleNode("a:propstat/a:prop/a:displayname",xmlnsm); 
&lt;P mce_keep="true"&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;//Downloads the EML file from the specified URL&amp;nbsp;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;byte&lt;/FONT&gt;&lt;FONT size=2&gt;[] emlFile = GetBytesFrom(hrefNode.InnerText); 
&lt;P mce_keep="true"&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;//Uploads the EML file to the SharePoint document library&amp;nbsp;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UploadToSPS(emlFile,strSPSRootURI + System.Web.HttpUtility.UrlPathEncode(displayNameNode.InnerText));&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;else&amp;nbsp;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("No non-folder items found...");&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;// Clean up.&amp;nbsp;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ResponseStream.Close();&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Response.Close();&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;catch&lt;/FONT&gt;&lt;FONT size=2&gt;(Exception ex)&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;// Catch any exceptions. Any error codes from the SEARCH&amp;nbsp;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;// method request on the server will be caught here, also.&amp;nbsp;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(ex.Message);&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("Done.");&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.Read();&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;static&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;byte&lt;/FONT&gt;&lt;FONT size=2&gt;[] GetBytesFrom(&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;string&lt;/FONT&gt;&lt;FONT size=2&gt; DavURL)&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(DavURL);&amp;nbsp;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;byte&lt;/FONT&gt;&lt;FONT size=2&gt;[] buffer;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Net.HttpWebRequest Request;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Net.HttpWebResponse Response;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.IO.Stream ResponseStream;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Request = (HttpWebRequest)HttpWebRequest.Create(DavURL);&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Request.Credentials = MyCredentialCache;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Request.Headers.Add("Translate","f");&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Response = (HttpWebResponse)Request.GetResponse();&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ResponseStream = Response.GetResponseStream();&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; buffer = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;byte&lt;/FONT&gt;&lt;FONT size=2&gt;[Response.ContentLength];&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ResponseStream.Read(buffer,0,(&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;int&lt;/FONT&gt;&lt;FONT size=2&gt;)Response.ContentLength);&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ResponseStream.Close();&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Response.Close();&amp;nbsp;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;return&lt;/FONT&gt;&lt;FONT size=2&gt; buffer;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;static&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;void&lt;/FONT&gt;&lt;FONT size=2&gt; UploadToSPS(&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;byte&lt;/FONT&gt;&lt;FONT size=2&gt;[] fileBytes, &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;string&lt;/FONT&gt;&lt;FONT size=2&gt; URL)&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("Uploading " + fileBytes.Length.ToString() + " bytes to " + URL);&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Net.HttpWebRequest Request;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Request = (HttpWebRequest)HttpWebRequest.Create(URL);&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Request.Credentials = MyCredentialCache;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Request.ContentLength = fileBytes.Length;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Request.Method = "PUT";&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.IO.Stream str = Request.GetRequestStream();&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str.Write(fileBytes,0,fileBytes.Length);&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str.Close();&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Request.GetResponse();&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;BR&gt;}&lt;/FONT&gt; &lt;/CODE&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1612528" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/pcreehan/archive/tags/Exchange/default.aspx">Exchange</category><category domain="http://blogs.msdn.com/pcreehan/archive/tags/WebDAV/default.aspx">WebDAV</category><category domain="http://blogs.msdn.com/pcreehan/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.msdn.com/pcreehan/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blogs.msdn.com/pcreehan/archive/tags/DevMsgTeam/default.aspx">DevMsgTeam</category></item><item><title>Custom Calendar Providers for Outlook 2007</title><link>http://blogs.msdn.com/pcreehan/archive/2006/11/21/custom-calendar-providers-for-outlook-2007.aspx</link><pubDate>Tue, 21 Nov 2006 15:43:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1115855</guid><dc:creator>Patrick Creehan</dc:creator><slash:comments>26</slash:comments><comments>http://blogs.msdn.com/pcreehan/comments/1115855.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pcreehan/commentrss.aspx?PostID=1115855</wfw:commentRss><description>&lt;P&gt;So if you were using &lt;A class="" href="http://blogs.msdn.com/toub/" target=_blank mce_href="http://blogs.msdn.com/toub/"&gt;Stephen Toub's&lt;/A&gt; &lt;A class="" href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/odc_OL2003_ta/html/odc_OLOutlookCalendar.asp" target=_blank mce_href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/odc_OL2003_ta/html/odc_OLOutlookCalendar.asp"&gt;Custom Calendar Provider sample&lt;/A&gt; for Outlook 2003, and you are testing out the awesome new Outlook 2007 features, you may have noticed that the code sample he provided doesn't work any more. Stephen is planning to update the article for 2007 eventually, but until then, here's the fix. &lt;/P&gt;
&lt;P&gt;The GetList web service method is supposed to return a &amp;lt;Fields&amp;gt; node filled with &amp;lt;Field&amp;gt; nodes that describe each field in that list, including type information, display names, read-only properties, etc. In the sample above, Stephen is not returning the &amp;lt;Fields&amp;gt; node as a part of the response. The reason is that Outlook 2003 ignored this information when it was performing the sync. Outlook 2007 is a little more intelligent in this regard and it does need this information returned. It's not a big deal when linking to a SharePoint Events list, because SharePoint always returns that data. In an effort to keep the code simple, Stephen ignored it.&lt;/P&gt;
&lt;P&gt;So the answer is that we need to add that information back in. So what you'll want to do is edit the WssListResponse.cs file as follows:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Add a new private static method called AddFieldElement as follows:&lt;/LI&gt;&lt;CODE&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;summary&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;/// Adds a Field node to the Fields parent node&lt;BR&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;/summary&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;param name="parentDoc"&amp;gt;XmlDocument parent doc used for creating the new element&amp;lt;/param&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;param name="parentNode"&amp;gt;The parent Fields node to which to add the new Field element&amp;lt;/param&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;param name="type"&amp;gt;Type attribute&amp;lt;/param&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;param name="colName"&amp;gt;ColName attribute&amp;lt;/param&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;param name="name"&amp;gt;Name attribute&amp;lt;/param&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;param name="displayName"&amp;gt;DisplayName attribute&amp;lt;/param&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;param name="readOnly"&amp;gt;ReadOnly attribute&amp;lt;/param&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;param name="hidden"&amp;gt;Hidden attribute&amp;lt;/param&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;param name="fromBaseType"&amp;gt;FromBaseType attribute&amp;lt;/param&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;private static XmlElement AddFieldElement(XmlDocument parentDoc,XmlNode parentNode,string type, string colName, string name, string displayName,bool readOnly, bool hidden, bool fromBaseType)&lt;BR&gt;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;XmlElement fieldEl = parentDoc.CreateElement(null,"Field",_wssns);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;parentNode.AppendChild(fieldEl);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(type != null)&amp;nbsp;&amp;nbsp;AddAttribute(fieldEl,null,"Type",null,type);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(colName != null)&amp;nbsp;&amp;nbsp;AddAttribute(fieldEl,null,"ColName",null,colName);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(name != null)&amp;nbsp;&amp;nbsp;AddAttribute(fieldEl,null,"Name",null,name);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(displayName != null) AddAttribute(fieldEl,null,"DisplayName",null,displayName);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(readOnly)&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(fieldEl,null,"ReadOnly",null,"TRUE");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(hidden)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(fieldEl,null,"Hidden",null,"TRUE");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(fromBaseType)&amp;nbsp;&amp;nbsp;AddAttribute(fieldEl,null,"FromBaseType",null,"TRUE");&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;return fieldEl;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;}&lt;/P&gt;&lt;/CODE&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Modify the GetListDescription Method as follows:&lt;/DIV&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;CODE&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&amp;nbsp;public static XmlNode GetListDescription(string title, Guid id)&lt;BR&gt;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Create the response document&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;XmlDocument doc = new XmlDocument();&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Add a List element&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;XmlNode list = doc.CreateElement(null, "List",&amp;nbsp; _wssns);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;doc.AppendChild(list);&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Add attributes about the list to the List element&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(list, null, "DocTemplateUrl", null, "");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(list, null, "DefaultViewUrl", null, "/Lists/" + id.ToString("N") + "/AllItems.aspx");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(list, null, "ID", null, id.ToString("B"));&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(list, null, "Title", null, title);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(list, null, "Description", null, title);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(list, null, "ImageUrl", null, "/_layouts/images/itevent.gif");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(list, null, "Name", null, id.ToString("N"));&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(list, null, "BaseType", null, "0");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(list, null, "ServerTemplate", null, "106");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(list, null, "Created", null, DateTime.MinValue.AddDays(2).ToString("s").Replace("T", " "));&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(list, null, "Modified", null, DateTime.MinValue.AddDays(3).ToString("s").Replace("T", " "));&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(list, null, "LastDeleted", null, DateTime.MinValue.AddDays(3).ToString("s").Replace("T", " "));&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(list, null, "Version", null, "0");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(list, null, "Direction", null, "none");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(list, null, "ThumbnailSize", null, "");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(list, null, "WebImageWidth", null, "");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(list, null, "WebImageHeight", null, "");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(list, null, "Flags", null, "4096");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(list, null, "ItemCount", null, "1"); // isn't used, so no point in recomputing size of list&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(list, null, "AnonymousPermMask", null, "");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(list, null, "RootFolder", null, "/Lists/" + id.ToString("N"));&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(list, null, "ReadSecurity", null, "1");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(list, null, "WriteSecurity", null, "1");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(list, null, "Author", null, "1");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(list, null, "AnonymousPermMask", null, "");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(list, null, "EventSinkAssembly", null, "");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(list, null, "EventSinkClass", null, "");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(list, null, "EventSinkData", null, "");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(list, null, "EmailInsertsFolder", null, "");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(list, null, "AllowDeletion", null, "TRUE");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(list, null, "AllowMultiResponses", null, "FALSE");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(list, null, "EnableAttachments", null, "TRUE");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(list, null, "EnableModeration", null, "FALSE");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(list, null, "EnableVersioning", null, "FALSE");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(list, null, "Hidden", null, "FALSE");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(list, null, "MultipleDataList", null, "FALSE");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(list, null, "Ordered", null, "FALSE");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(list, null, "ShowUser", null, "TRUE");&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;//Create Fields node&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;XmlElement fieldsNode = doc.CreateElement(null, "Fields",&amp;nbsp; _wssns);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;list.AppendChild(fieldsNode);&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;XmlElement tmpEl;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;//Append Fields&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;tmpEl = AddFieldElement(doc,fieldsNode,"Counter","tp_ID","ID","ID",true,false,true);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;tmpEl = AddFieldElement(doc,fieldsNode,"Text","nvarchar1","Title","Title",false,false,true);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;tmpEl = AddFieldElement(doc,fieldsNode,"DateTime","tp_Modified","Modified","Modified",true,false,true);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(tmpEl,null,"StorageTZ",null,"TRUE");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;tmpEl = AddFieldElement(doc,fieldsNode,"DateTime","tp_Created","Created","Created",true,false,true);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(tmpEl,null,"StorageTZ",null,"TRUE");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;tmpEl = AddFieldElement(doc,fieldsNode,"User","tp_Author","Author","Created By",true,false,true);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(tmpEl,null,"List",null,"UserInfo");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;tmpEl = AddFieldElement(doc,fieldsNode,"User","tp_Editor","Editor","Modified By",true,false,true);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(tmpEl,null,"List",null,"UserInfo");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;tmpEl = AddFieldElement(doc,fieldsNode,"Integer","tp_Version","owshiddenversion","owshiddenversion",true,true,true);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(tmpEl,null,"SetAs",null,"owshiddenversion");&lt;BR&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;tmpEl = AddFieldElement(doc,fieldsNode,"Attachments","tp_HasAttachment","Attachments","Attachments",true,false,true);&lt;BR&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;tmpEl = AddFieldElement(doc,fieldsNode,"ModStat","tp_ModerationStatus","_ModerationStatus","Approval Status",true,true,true);&lt;BR&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(tmpEl,null,"CanToggleHidden",null,"TRUE");&lt;BR&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(tmpEl,null,"Required",null,"FALSE");&lt;BR&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;tmpEl = AddFieldElement(doc,fieldsNode,"Note","ntext1","_ModerationComments","Approver Comments",true,true,true);&lt;BR&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(tmpEl,null,"CanToggleHidden",null,"TRUE");&lt;BR&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(tmpEl,null,"Sortable",null,"FALSE");&lt;BR&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;tmpEl = AddFieldElement(doc,fieldsNode,"Computed",null,"Edit","Edit",true,false,true);&lt;BR&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(tmpEl,null,"Sortable",null,"FALSE");&lt;BR&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(tmpEl,null,"Filterable",null,"FALSE");&lt;BR&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(tmpEl,null,"AuthoringInfo",null,"(link to edit item)");&lt;BR&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;tmpEl = AddFieldElement(doc,fieldsNode,"Computed",null,"LinkTitleNoMenu","Title",true,false,true);&lt;BR&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(tmpEl,null,"AuthoringInfo",null,"(linked to item)");&lt;BR&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(tmpEl,null,"Dir",null,"");&lt;BR&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(tmpEl,null,"DisplayNameSrcField",null,"Title");&lt;BR&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;tmpEl = AddFieldElement(doc,fieldsNode,"Computed",null,"LinkTitle","Title",true,false,true);&lt;BR&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(tmpEl,null,"AuthoringInfo",null,"(linked to item with edit menu)");&lt;BR&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(tmpEl,null,"DisplayNameSrcField",null,"Title");&lt;BR&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(tmpEl,null,"ClassInfo",null,"Menu");&lt;BR&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;tmpEl = AddFieldElement(doc,fieldsNode,"Computed",null,"SelectTitle","Select",true,true,true);&lt;BR&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(tmpEl,null,"AuthoringInfo",null,"(web part connection)");&lt;BR&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(tmpEl,null,"Dir",null,"");&lt;BR&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(tmpEl,null,"Sortable",null,"FALSE");&lt;BR&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(tmpEl,null,"CanToggleHidden",null,"TRUE");&lt;BR&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;tmpEl = AddFieldElement(doc,fieldsNode,"Integer","tp_InstanceID","InstanceID","InstanceID",true,true,true);&lt;BR&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(tmpEl,null,"Sortable",null,"TRUE");&lt;BR&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(tmpEl,null,"Filterable",null,"TRUE");&lt;BR&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(tmpEl,null,"Min",null,"0");&lt;BR&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(tmpEl,null,"Max",null,"99991231");&lt;BR&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;tmpEl = AddFieldElement(doc,fieldsNode,"Number","tp_ItemOrder","Order","Order",false,true,true);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;tmpEl = AddFieldElement(doc,fieldsNode,"Guid","tp_Guid","GUID","GUID",true,true,true);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;tmpEl = AddFieldElement(doc,fieldsNode,"DateTime","datetime1","EventDate","Begin",false,false,true);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(tmpEl,null,"Format",null,"DateTime");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(tmpEl,null,"Sealed",null,"TRUE");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(tmpEl,null,"Required",null,"TRUE");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(tmpEl,null,"Filterable",null,"FALSE");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(tmpEl,null,"FilterableNoRecurrence",null,"TRUE");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;tmpEl = AddFieldElement(doc,fieldsNode,"DateTime","datetime2","EndDate","End",false,false,true);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(tmpEl,null,"Format",null,"DateTime");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(tmpEl,null,"Sealed",null,"TRUE");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(tmpEl,null,"Filterable",null,"FALSE");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(tmpEl,null,"FilterableNoRecurrence",null,"TRUE");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;tmpEl = AddFieldElement(doc,fieldsNode,"Note","ntext2","Description","Description",false,false,false);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(tmpEl,null,"Sealed",null,"TRUE");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(tmpEl,null,"Sortable",null,"False");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;tmpEl = AddFieldElement(doc,fieldsNode,"Text","nvarchar","Location","Location",false,false,false);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(tmpEl,null,"Sealed",null,"TRUE");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;tmpEl = AddFieldElement(doc,fieldsNode,"Recurrence","bit1","fRecurrence","Recurrence",false,false,false);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(tmpEl,null,"DisplayImage",null,"recur.gif");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(tmpEl,null,"HeaderImage",null,"recur.gif");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(tmpEl,null,"ClassInfo",null,"Icon");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(tmpEl,null,"Sealed",null,"TRUE");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(tmpEl,null,"NoEditFormBreak",null,"TRUE");&lt;BR&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;tmpEl = AddFieldElement(doc,fieldsNode,"CrossProjectLink","bit2","WorkspaceLink","Workspace",false,false,false);&lt;BR&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(tmpEl,null,"Format",null,"EventList");&lt;BR&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(tmpEl,null,"DisplayImage",null,"mtgicon.gif");&lt;BR&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(tmpEl,null,"HeaderImage",null,"mtgicnhd.gif");&lt;BR&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(tmpEl,null,"ClassInfo",null,"Icon");&lt;BR&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(tmpEl,null,"Title",null,"Meeting Workspace");&lt;BR&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(tmpEl,null,"Filterable",null,"TRUE");&lt;BR&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(tmpEl,null,"Sealed",null,"TRUE");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;tmpEl = AddFieldElement(doc,fieldsNode,"Integer","int1","EventType","Event Type",false,true,false);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(tmpEl,null,"Sealed",null,"TRUE");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;tmpEl = AddFieldElement(doc,fieldsNode,"Guid","uniqueidentifier1","UID","UID",false,true,false);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(tmpEl,null,"Sealed",null,"TRUE");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;tmpEl = AddFieldElement(doc,fieldsNode,"DateTime","datetime3","RecurrenceID","Recurrence ID",false,true,false);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(tmpEl,null,"Sealed",null,"TRUE");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(tmpEl,null,"CalType",null,"1");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(tmpEl,null,"Format",null,"ISO8601Gregorian");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;tmpEl = AddFieldElement(doc,fieldsNode,"Boolean","bit3","EventCanceled","Event Canceled",false,true,false);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(tmpEl,null,"Sealed",null,"TRUE");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;tmpEl = AddFieldElement(doc,fieldsNode,"Integer","int2","Duration","Duration",false,true,false);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(tmpEl,null,"Sealed",null,"TRUE");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;tmpEl = AddFieldElement(doc,fieldsNode,"Note","ntext3","RecurrenceData","RecurrenceData",false,true,false);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(tmpEl,null,"Sealed",null,"TRUE");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;tmpEl = AddFieldElement(doc,fieldsNode,"Integer","int3","TimeZone","TimeZone",false,true,false);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(tmpEl,null,"Sealed",null,"TRUE");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;tmpEl = AddFieldElement(doc,fieldsNode,"Note","ntext4","XMLTZone","XMLTZone",false,true,false);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(tmpEl,null,"Sealed",null,"TRUE");&lt;BR&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;tmpEl = AddFieldElement(doc,fieldsNode,"Integer","int4","MasterSeriesItemID","MasterSeriesItemID",false,true,false);&lt;BR&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(tmpEl,null,"Sealed",null,"TRUE");&lt;BR&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;tmpEl = AddFieldElement(doc,fieldsNode,"URL","nvarchar3","Workspace","WorkspaceUrl",false,true,false);&lt;BR&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(tmpEl,null,"Sealed",null,"TRUE");&lt;BR&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;AddAttribute(tmpEl,null,"ColName2",null,"nvarchar4");&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Return the XML&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;return doc;&lt;BR&gt;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&lt;/P&gt;&lt;/CODE&gt;
&lt;P mce_keep="true"&gt;You'll notice that I have commented out a few lines in this method. There are probably more lines that can be commented out. We're not returning all the information that SharePoint would return, but it's not all useful to Outlook, so why clog the ethernet lines with useless data?!&lt;/P&gt;
&lt;P mce_keep="true"&gt;Anyway, once you've made those modifications, you can recompile the web application and you should be golden!&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1115855" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/pcreehan/archive/tags/Outlook/default.aspx">Outlook</category><category domain="http://blogs.msdn.com/pcreehan/archive/tags/Outlook+2007/default.aspx">Outlook 2007</category><category domain="http://blogs.msdn.com/pcreehan/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.msdn.com/pcreehan/archive/tags/STSSync/default.aspx">STSSync</category><category domain="http://blogs.msdn.com/pcreehan/archive/tags/SharePoint/default.aspx">SharePoint</category></item></channel></rss>