<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://dotnet.org.za/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>Jean-Pierre under the Guru Meditation Tree</title><link>http://dotnet.org.za/jpfouche/default.aspx</link><description>Microsoft Development,  .NET.  VSTS, WF, VSTO, Sharepoint, SQL Server</description><dc:language>en</dc:language><generator>CommunityServer 2007 SP2 (Build: 20611.960)</generator><item><title>Downloading/Streaming Documents whilst Setting Control Values using an ASP.NET 'Download' button</title><link>http://dotnet.org.za/jpfouche/archive/2008/08/19/downloading-streaming-documents-whilst-setting-control-values-using-an-asp-net-download-button.aspx</link><pubDate>Tue, 19 Aug 2008 16:42:57 GMT</pubDate><guid isPermaLink="false">2d3a9e08-b70c-4031-ba2b-8f5282a2a59a:533694</guid><dc:creator>virasana</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Ok, have you ever tried downloading a document using a server-side Click event on a button?&amp;#160; You probably did something like sending the content in the response as a stream, like this?:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;private void DownloadDocument(int documentId)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; string filePath = Server.MapPath(String.Concat(&amp;quot;Document_&amp;quot;, documentId, &amp;quot;.pdf&amp;quot;));       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; System.IO.FileInfo file = new System.IO.FileInfo(filePath);       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if(file.Exists)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Response.Clear();       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Response.AddHeader(&amp;quot;Content-Disposition&amp;quot;, &amp;quot;attachment; filename=&amp;quot; + file.Name);       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Response.AddHeader(&amp;quot;Content-Length&amp;quot;, file.Length.ToString());       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Response.ContentType = &amp;quot;application/octet-stream&amp;quot;;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Response.WriteFile(file.FullName);       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Response.End();       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; else       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Response.Write(&amp;quot;This file does not exist.&amp;quot;);       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.DocumentFiledCheckBox.Enabled = false;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Page.ClientScript.RegisterClientScriptBlock(this.GetType(), &amp;quot;AsyncCallbacks&amp;quot;, &amp;quot;&amp;quot;);       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Now what if you wanted to set the values of certain controls on the form, in addition to sending the&amp;#160; pdf stream? (e.g. you wanted to enable a check box, so the user can indicate whether she has filed the document, but this check box should only be available if she has downloaded it)&lt;/p&gt;  &lt;p&gt;Maybe you had something like this:&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&amp;#160;&amp;#160; &lt;strong&gt;protected void DownloadButton_Click(object sender, EventArgs e)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //Enable the check box, as per requirement       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.DocumentFiledCheckBox.Enabled = true;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; DownloadDocument(101);&lt;/strong&gt;&lt;strong&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Problem is that you won&amp;#39;t be able to set the control values in this way, probably because you are streaming an entirely different response.&amp;#160; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Scratch your head for a day and a half on this, and then try the following solution:    &lt;br /&gt;&lt;/p&gt;  &lt;h4&gt;&lt;u&gt;MY SOLUTION&lt;/u&gt;&lt;/h4&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;In the aspx file&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&amp;lt;%@ Page Language=&amp;quot;C#&amp;quot; AutoEventWireup=&amp;quot;true&amp;quot; CodeFile=&amp;quot;Default.aspx.cs&amp;quot; Inherits=&amp;quot;Default&amp;quot; ValidateRequest=&amp;quot;false&amp;quot;&amp;#160; EnableEventValidation=&amp;quot;false&amp;quot; %&amp;gt; &lt;/p&gt;  &lt;p&gt;&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD XHTML 1.0 Transitional//EN&amp;quot; &amp;quot;&lt;a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;quot;&lt;/a&gt;&amp;gt; &lt;/p&gt;  &lt;p&gt;&amp;lt;html xmlns=&amp;quot;&lt;a href="http://www.w3.org/1999/xhtml"&gt;http://www.w3.org/1999/xhtml&amp;quot;&lt;/a&gt; &amp;gt;     &lt;br /&gt;&amp;lt;head id=&amp;quot;Head1&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;title&amp;gt;Download a Document&amp;lt;/title&amp;gt;     &lt;br /&gt;&amp;lt;/head&amp;gt;     &lt;br /&gt;&amp;lt;body&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;form id=&amp;quot;form1&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;div&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;asp:TextBox ID=&amp;quot;DocumentIdTextBox&amp;quot; Text = &amp;quot;101&amp;quot; runat=&amp;quot;server&amp;quot; /&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;asp:Button ID=&amp;quot;DownloadButton&amp;quot; runat=&amp;quot;server&amp;quot; OnClick=&amp;quot;DownloadButton_Click&amp;quot; Text=&amp;quot;Download Document&amp;quot; /&amp;gt;&amp;amp;nbsp;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;br /&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;br /&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;asp:CheckBox ID=&amp;quot;DocumentFiledCheckBox&amp;quot; Text=&amp;quot;Document Filed&amp;quot; Enabled=&amp;quot;false&amp;quot; runat=&amp;quot;server&amp;quot; /&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;asp:Button ID=&amp;quot;CallbackButton&amp;quot; runat=&amp;quot;server&amp;quot; OnClick=&amp;quot;CallbackButton_Click&amp;quot; Text=&amp;quot;DownloadDocumentCallbackPlaceholderButton&amp;quot; UseSubmitBehavior=&amp;quot;False&amp;quot; Visible=&amp;quot;True&amp;quot; /&amp;gt;&amp;lt;/div&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/form&amp;gt;     &lt;br /&gt;&amp;lt;/body&amp;gt;     &lt;br /&gt;&amp;lt;/html&amp;gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;We have a simple form containing:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;- a &lt;strong&gt;DocumentIdTextBox&lt;/strong&gt; Text Box control for the document ID you want to download.&lt;/p&gt;    &lt;p&gt;-a hidden &lt;strong&gt;CallbackButton&lt;/strong&gt; Text Box controls which you are going to use to do an automated post back when the response has been downloaded from the server.&lt;/p&gt;    &lt;p&gt;- a &lt;strong&gt;DocumentFiledCheckBox&lt;/strong&gt; which will be enabled when you click the download button, otherwise its initial state is disabled.&lt;/p&gt;    &lt;p&gt;- Notice that the &lt;strong&gt;UseSubmitBehavior&lt;/strong&gt; property for each of the buttons above is set to false.&amp;#160; This will enable ASP.NET to render the __doPostBack functions.&amp;#160; If you do not set this property, you may not get a __doPostBack function in your browser.&amp;#160; This is presumably because a submit button will post to the server as part of the behaviour provided by HTML.&amp;#160; See point 5 of the .cs file notes below, for more on this...&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;In the .cs file:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;1. Handle the initial click event:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; //1. Download button is clicked    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; protected void DownloadButton_Click(object sender, EventArgs e)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //Enable the check box, as per requirement     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.DocumentFiledCheckBox.Enabled = true;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //Cause the browser to download the document     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;strong&gt;SetUpClientSideScriptToDownloadDocument(int.Parse(this.DocumentIdTextBox.Text));      &lt;br /&gt;&lt;/strong&gt;&amp;#160;&amp;#160;&amp;#160; } &lt;/p&gt;  &lt;p&gt;Notice that the key bit here is to send a client-side callback which fires as soon as the response is received&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;2.&amp;#160; Fire a client-side callback:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Notice that we need to set a timeout, and attach to the onload event of the window.&amp;#160; Otherwise, you may find that your code breaks every so often, in search of your mystery client-side control, which has not loaded yet.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;You are welcome to try raising the click event of our hidden control by using __doPostBack... This didn&amp;#39;t work for me.&amp;#160; I could not get the server to fire the Click event.&amp;#160; Instead, it just went wizzing by my Click event handler.&amp;#160;&amp;#160; It did do a postback, though.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;// 2.&amp;#160;&amp;#160; Browser receives this code --&amp;gt; we use __doPostBack as an alternative to window.open()      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; //to avoid Popup blockers, used by most browsers these days.       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; private void SetUpClientSideScriptToDownloadDocument(int documentId)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; { &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //Defer tag should make this fire only after the full response has been received      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //This didn&amp;#39;t work for me       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; string javaScript = @&amp;quot;&amp;lt;script language=&amp;#39;JavaScript&amp;#39; defer=&amp;#39;defer&amp;#39;&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; __doPostBack(&amp;#39;CallbackButton&amp;#39;,&amp;#39;onclick&amp;#39;);       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/script&amp;gt;&amp;quot;; &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //Set a timeout so that this fires timeously i.e. AFTER entire response has been received      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; string javaScript = @&amp;quot;&amp;lt;script language=&amp;#39;javascript&amp;#39; type=&amp;#39;text/javascript&amp;#39;&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; window.attachEvent(&amp;#39;onload&amp;#39;,function(){setTimeout(&amp;#39;DownloadKeyFactsDocument()&amp;#39;,50);}); &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; function DownloadKeyFactsDocument()      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //__doPostBack(&amp;#39;CallbackButton&amp;#39;,&amp;#39;onclick&amp;#39;);       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; document.getElementById(&amp;#39;&amp;quot; + this.CallbackButton.ClientID + @&amp;quot;&amp;#39;).click();       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/script&amp;gt;&amp;quot;; &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if (!Page.ClientScript.IsClientScriptBlockRegistered(&amp;quot;AsyncCallbacks&amp;quot;))      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Page.ClientScript.RegisterClientScriptBlock(this.GetType(), &amp;quot;AsyncCallbacks&amp;quot;, javaScript); &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;3.&amp;#160;&amp;#160; Handle the Callback on the server:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Our server-side function handles the click event of our invisible button.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&amp;#160;&amp;#160;&amp;#160; //3.&amp;#160; Browser calls this function(browser calls __doPostBack(&amp;#39;CallbackButton&amp;#39;, &amp;#39;onclick&amp;#39;);      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; protected void CallbackButton_Click(object sender, EventArgs e)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.DownloadDocument(int.Parse(this.DocumentIdTextBox.Text));       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; } &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;4.&amp;#160; Download the document&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The rest is history...&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&amp;#160;&amp;#160;&amp;#160; //4.&amp;#160;&amp;#160;&amp;#160; Stream the document to the browser from the server      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; private void DownloadDocument(int documentId)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; string filePath = Server.MapPath(String.Concat(&amp;quot;Document_&amp;quot;, documentId, &amp;quot;.pdf&amp;quot;));       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; System.IO.FileInfo file = new System.IO.FileInfo(filePath);       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if(file.Exists)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Response.Clear();       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Response.AddHeader(&amp;quot;Content-Disposition&amp;quot;, &amp;quot;attachment; filename=&amp;quot; + file.Name);       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Response.AddHeader(&amp;quot;Content-Length&amp;quot;, file.Length.ToString());       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Response.ContentType = &amp;quot;application/octet-stream&amp;quot;;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Response.WriteFile(file.FullName);       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Response.End();       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; else       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Response.Write(&amp;quot;This file does not exist.&amp;quot;);       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.DocumentFiledCheckBox.Enabled = false;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Page.ClientScript.RegisterClientScriptBlock(this.GetType(), &amp;quot;AsyncCallbacks&amp;quot;, &amp;quot;&amp;quot;);       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }       &lt;br /&gt;}&lt;/strong&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;5. Make sure you get a __doPostBack function as part of the response&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The following code in Page_Load ensures that the browser gets a __doPostBack function:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;protected void Page_Load(object sender, EventArgs e)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //Must always render __doPostBack       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // (even when callback button is invisible, and/or when &amp;#39;UseSubmitBehavior&amp;#39; is true)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //Notice that these two conditions (invisible and UseSubmitBehavior=true) will cause&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/strong&gt;&lt;strong&gt;//ASP.Net not to render the __doPostBack function      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Page.ClientScript.GetPostBackClientHyperlink(this, &amp;quot;&amp;quot;);       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.CallbackButton.Attributes.Add(&amp;quot;style&amp;quot;, &amp;quot;display:none&amp;quot;);       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; } &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;6.&amp;#160; Make sure you hide your control correctly&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Just in case you don&amp;#39;t want to see the dummy control, you will also use this code in Page Load:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;this.CallbackButton.Attributes.Add(&amp;quot;style&amp;quot;, &amp;quot;display:none&amp;quot;);&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Why don&amp;#39;t we just use server side code, and set the Visible property of the button to false?&amp;#160; The answer is that if you do this, ASP&amp;gt;NET won&amp;#39;t render the control.&amp;#160; So trying this will make our infrastructure will fall over!&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;Here is a complete code listing for you:&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&amp;lt;%@ Page Language=&amp;quot;C#&amp;quot; AutoEventWireup=&amp;quot;true&amp;quot; CodeFile=&amp;quot;Default.aspx.cs&amp;quot; Inherits=&amp;quot;Default&amp;quot; ValidateRequest=&amp;quot;false&amp;quot;&amp;#160; EnableEventValidation=&amp;quot;false&amp;quot; %&amp;gt; &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD XHTML 1.0 Transitional//EN&amp;quot; &amp;quot;&lt;/strong&gt;&lt;a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;&lt;strong&gt;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;quot;&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;&amp;gt; &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&amp;lt;html xmlns=&amp;quot;&lt;/strong&gt;&lt;a href="http://www.w3.org/1999/xhtml"&gt;&lt;strong&gt;http://www.w3.org/1999/xhtml&amp;quot;&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt; &amp;gt;      &lt;br /&gt;&amp;lt;head id=&amp;quot;Head1&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;title&amp;gt;Download a Document&amp;lt;/title&amp;gt;       &lt;br /&gt;&amp;lt;/head&amp;gt;       &lt;br /&gt;&amp;lt;body&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;form id=&amp;quot;form1&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;div&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;asp:TextBox ID=&amp;quot;DocumentIdTextBox&amp;quot; Text = &amp;quot;101&amp;quot; runat=&amp;quot;server&amp;quot; /&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;asp:Button ID=&amp;quot;DownloadButton&amp;quot; runat=&amp;quot;server&amp;quot; OnClick=&amp;quot;DownloadButton_Click&amp;quot; Text=&amp;quot;Download Document&amp;quot; /&amp;gt;&amp;amp;nbsp;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;br /&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;br /&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;asp:CheckBox ID=&amp;quot;DocumentFiledCheckBox&amp;quot; Text=&amp;quot;Document Filed&amp;quot; Enabled=&amp;quot;false&amp;quot; runat=&amp;quot;server&amp;quot; /&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;asp:Button ID=&amp;quot;CallbackButton&amp;quot; runat=&amp;quot;server&amp;quot; OnClick=&amp;quot;CallbackButton_Click&amp;quot; Text=&amp;quot;DownloadDocumentCallbackPlaceholderButton&amp;quot; UseSubmitBehavior=&amp;quot;False&amp;quot; Visible=&amp;quot;True&amp;quot; /&amp;gt;&amp;lt;/div&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/form&amp;gt;       &lt;br /&gt;&amp;lt;/body&amp;gt;       &lt;br /&gt;&amp;lt;/html&amp;gt; &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&lt;strong&gt;using System;      &lt;br /&gt;using System.Data;       &lt;br /&gt;using System.Configuration;       &lt;br /&gt;using System.Collections;       &lt;br /&gt;using System.Web;       &lt;br /&gt;using System.Web.Security;       &lt;br /&gt;using System.Web.UI;       &lt;br /&gt;using System.Web.UI.WebControls;       &lt;br /&gt;using System.Web.UI.WebControls.WebParts;       &lt;br /&gt;using System.Web.UI.HtmlControls; &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;public partial class Default : System.Web.UI.Page      &lt;br /&gt;{ &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&amp;#160;&amp;#160;&amp;#160; protected void Page_Load(object sender, EventArgs e)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //Must always render __doPostBack       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // (even when callback button is invisible, and/or when &amp;#39;UseSubmitBehavior&amp;#39; is true)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //Notice that these two conditions (invisible and UseSubmitBehavior=true) will cause&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/strong&gt;&lt;strong&gt;//ASP.Net not to render the __doPostBack function      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Page.ClientScript.GetPostBackClientHyperlink(this, &amp;quot;&amp;quot;);       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.CallbackButton.Attributes.Add(&amp;quot;style&amp;quot;, &amp;quot;display:none&amp;quot;);       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; } &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&amp;#160;&amp;#160;&amp;#160; //1. Download button is clicked      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; protected void DownloadButton_Click(object sender, EventArgs e)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //Enable the check box, as per requirement       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.DocumentFiledCheckBox.Enabled = true;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //Cause the browser to download the document       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SetUpClientSideScriptToDownloadDocument(int.Parse(this.DocumentIdTextBox.Text));       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; } &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&amp;#160;&amp;#160;&amp;#160; //2.&amp;#160; Browser receives this code --&amp;gt; we use __doPostBack as an alternative to window.open()      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; //to avoid Popup blockers, used by most browsers these days.       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; private void SetUpClientSideScriptToDownloadDocument(int documentId)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; { &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //Defer tag should make this fire only after the full response has been received      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //This didn&amp;#39;t work for me       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; string javaScript = @&amp;quot;&amp;lt;script language=&amp;#39;JavaScript&amp;#39; defer=&amp;#39;defer&amp;#39;&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; __doPostBack(&amp;#39;CallbackButton&amp;#39;,&amp;#39;onclick&amp;#39;);       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/script&amp;gt;&amp;quot;; &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //Set a timeout so that this fires timeously i.e. AFTER entire response has been received      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; string javaScript = @&amp;quot;&amp;lt;script language=&amp;#39;javascript&amp;#39; type=&amp;#39;text/javascript&amp;#39;&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; window.attachEvent(&amp;#39;onload&amp;#39;,function(){setTimeout(&amp;#39;DownloadKeyFactsDocument()&amp;#39;,50);}); &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; function DownloadKeyFactsDocument()      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //__doPostBack(&amp;#39;CallbackButton&amp;#39;,&amp;#39;onclick&amp;#39;);       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; document.getElementById(&amp;#39;&amp;quot; + this.CallbackButton.ClientID + @&amp;quot;&amp;#39;).click();       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/script&amp;gt;&amp;quot;; &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if (!Page.ClientScript.IsClientScriptBlockRegistered(&amp;quot;AsyncCallbacks&amp;quot;))      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Page.ClientScript.RegisterClientScriptBlock(this.GetType(), &amp;quot;AsyncCallbacks&amp;quot;, javaScript); &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&amp;#160;&amp;#160;&amp;#160; } &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&amp;#160;&amp;#160;&amp;#160; //3.&amp;#160; Browser calls this function(browser calls __doPostBack(&amp;#39;CallbackButton&amp;#39;, &amp;#39;onclick&amp;#39;);      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; protected void CallbackButton_Click(object sender, EventArgs e)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.DownloadDocument(int.Parse(this.DocumentIdTextBox.Text));       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; } &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&amp;#160;&amp;#160;&amp;#160; //4.&amp;#160;&amp;#160;&amp;#160; Stream the document to the browser from the server      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; private void DownloadDocument(int documentId)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; string filePath = Server.MapPath(String.Concat(&amp;quot;Document_&amp;quot;, documentId, &amp;quot;.pdf&amp;quot;));       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; System.IO.FileInfo file = new System.IO.FileInfo(filePath);       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if(file.Exists)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Response.Clear();       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Response.AddHeader(&amp;quot;Content-Disposition&amp;quot;, &amp;quot;attachment; filename=&amp;quot; + file.Name);       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Response.AddHeader(&amp;quot;Content-Length&amp;quot;, file.Length.ToString());       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Response.ContentType = &amp;quot;application/octet-stream&amp;quot;;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Response.WriteFile(file.FullName);       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Response.End();       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; else       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Response.Write(&amp;quot;This file does not exist.&amp;quot;);       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.DocumentFiledCheckBox.Enabled = false;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Page.ClientScript.RegisterClientScriptBlock(this.GetType(), &amp;quot;AsyncCallbacks&amp;quot;, &amp;quot;&amp;quot;);       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }       &lt;br /&gt;}&lt;/strong&gt;&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://dotnet.org.za/jpfouche/archive/2008/08/19/downloading-streaming-documents-whilst-setting-control-values-using-an-asp-net-download-button.aspx&amp;amp;;subject=Downloading%2fStreaming+Documents+whilst+Setting+Control+Values+using+an+ASP.NET+%27Download%27+button" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/08/19/downloading-streaming-documents-whilst-setting-control-values-using-an-asp-net-download-button.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://dotnet.org.za/jpfouche/archive/2008/08/19/downloading-streaming-documents-whilst-setting-control-values-using-an-asp-net-download-button.aspx&amp;amp;;title=Downloading%2fStreaming+Documents+whilst+Setting+Control+Values+using+an+ASP.NET+%27Download%27+button" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/08/19/downloading-streaming-documents-whilst-setting-control-values-using-an-asp-net-download-button.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://dotnet.org.za/jpfouche/archive/2008/08/19/downloading-streaming-documents-whilst-setting-control-values-using-an-asp-net-download-button.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/08/19/downloading-streaming-documents-whilst-setting-control-values-using-an-asp-net-download-button.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://dotnet.org.za/jpfouche/archive/2008/08/19/downloading-streaming-documents-whilst-setting-control-values-using-an-asp-net-download-button.aspx&amp;amp;title=Downloading%2fStreaming+Documents+whilst+Setting+Control+Values+using+an+ASP.NET+%27Download%27+button" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/08/19/downloading-streaming-documents-whilst-setting-control-values-using-an-asp-net-download-button.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://dotnet.org.za/jpfouche/archive/2008/08/19/downloading-streaming-documents-whilst-setting-control-values-using-an-asp-net-download-button.aspx&amp;amp;;title=Downloading%2fStreaming+Documents+whilst+Setting+Control+Values+using+an+ASP.NET+%27Download%27+button" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/08/19/downloading-streaming-documents-whilst-setting-control-values-using-an-asp-net-download-button.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://dotnet.org.za/jpfouche/archive/2008/08/19/downloading-streaming-documents-whilst-setting-control-values-using-an-asp-net-download-button.aspx&amp;amp;;title=Downloading%2fStreaming+Documents+whilst+Setting+Control+Values+using+an+ASP.NET+%27Download%27+button&amp;amp;;top=1" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/08/19/downloading-streaming-documents-whilst-setting-control-values-using-an-asp-net-download-button.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://dotnet.org.za/aggbug.aspx?PostID=533694" width="1" height="1"&gt;</description><category domain="http://dotnet.org.za/jpfouche/archive/tags/ASP.NET/default.aspx">ASP.NET</category></item><item><title>VSTS Source Control Problem - No "Add to Source Control" menu item</title><link>http://dotnet.org.za/jpfouche/archive/2008/08/08/vsts-source-control-problem-no-quot-add-to-source-control-quot-menu-item.aspx</link><pubDate>Fri, 08 Aug 2008 11:34:10 GMT</pubDate><guid isPermaLink="false">2d3a9e08-b70c-4031-ba2b-8f5282a2a59a:516363</guid><dc:creator>virasana</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Problem Description:&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&amp;#8220;Add to source control&amp;#8221; item is missing in Solution Explorer, for a particular project.&lt;/p&gt;  &lt;p&gt;We did the following:&lt;/p&gt;  &lt;p&gt;1. Ensure that workspace folders are the same structure as on the server.&amp;#160; The folder on the workspace did not exist on the server.&amp;#160; &lt;/p&gt;  &lt;p&gt;2. Add the folder on the server using source control explorer (Team Explorer).&amp;#160; &lt;/p&gt;  &lt;p&gt;3. Adjust local workspace to reflect server structure.&amp;#160; We needed to remove the project from the solution in order to do this.&lt;/p&gt;  &lt;p&gt;4. File|Source Control | Change Source Control --&amp;gt;&amp;#160; the binding for our naughty project&amp;#160; was marked &amp;#8220;invalid&amp;#8221; --&amp;gt; unbind and then rebind this project&amp;#160; --&amp;gt; project now &amp;#8220;Valid&amp;#8221;&lt;/p&gt;  &lt;p&gt;5. Add solution to source control (you now see the menu item in solution explorer&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://dotnet.org.za/jpfouche/archive/2008/08/08/vsts-source-control-problem-no-quot-add-to-source-control-quot-menu-item.aspx&amp;amp;;subject=VSTS+Source+Control+Problem+-+No+%26quot%3bAdd+to+Source+Control%26quot%3b+menu+item" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/08/08/vsts-source-control-problem-no-quot-add-to-source-control-quot-menu-item.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://dotnet.org.za/jpfouche/archive/2008/08/08/vsts-source-control-problem-no-quot-add-to-source-control-quot-menu-item.aspx&amp;amp;;title=VSTS+Source+Control+Problem+-+No+%26quot%3bAdd+to+Source+Control%26quot%3b+menu+item" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/08/08/vsts-source-control-problem-no-quot-add-to-source-control-quot-menu-item.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://dotnet.org.za/jpfouche/archive/2008/08/08/vsts-source-control-problem-no-quot-add-to-source-control-quot-menu-item.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/08/08/vsts-source-control-problem-no-quot-add-to-source-control-quot-menu-item.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://dotnet.org.za/jpfouche/archive/2008/08/08/vsts-source-control-problem-no-quot-add-to-source-control-quot-menu-item.aspx&amp;amp;title=VSTS+Source+Control+Problem+-+No+%26quot%3bAdd+to+Source+Control%26quot%3b+menu+item" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/08/08/vsts-source-control-problem-no-quot-add-to-source-control-quot-menu-item.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://dotnet.org.za/jpfouche/archive/2008/08/08/vsts-source-control-problem-no-quot-add-to-source-control-quot-menu-item.aspx&amp;amp;;title=VSTS+Source+Control+Problem+-+No+%26quot%3bAdd+to+Source+Control%26quot%3b+menu+item" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/08/08/vsts-source-control-problem-no-quot-add-to-source-control-quot-menu-item.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://dotnet.org.za/jpfouche/archive/2008/08/08/vsts-source-control-problem-no-quot-add-to-source-control-quot-menu-item.aspx&amp;amp;;title=VSTS+Source+Control+Problem+-+No+%26quot%3bAdd+to+Source+Control%26quot%3b+menu+item&amp;amp;;top=1" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/08/08/vsts-source-control-problem-no-quot-add-to-source-control-quot-menu-item.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://dotnet.org.za/aggbug.aspx?PostID=516363" width="1" height="1"&gt;</description><category domain="http://dotnet.org.za/jpfouche/archive/tags/Visual+Studio+Team+System/default.aspx">Visual Studio Team System</category></item><item><title>Developer Express v 7.2 issue - Properties missing in property editor on VGrid Control</title><link>http://dotnet.org.za/jpfouche/archive/2008/07/22/developer-express-v-7-2-issue-properties-missing-in-property-editor-on-vgrid-control.aspx</link><pubDate>Tue, 22 Jul 2008 09:31:00 GMT</pubDate><guid isPermaLink="false">2d3a9e08-b70c-4031-ba2b-8f5282a2a59a:487775</guid><dc:creator>virasana</dc:creator><slash:comments>0</slash:comments><description>&lt;p class="MsoPlainText" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Consolas" size="3"&gt;If you are having problems with the VGrid control in DevExpress i.e. your properties do not display on the Row Editor, try removing the registry key below.&amp;nbsp; I am using Visual Studio 2005 on VIsta, Business edition.&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoPlainText" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Consolas" size="3"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoPlainText" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Consolas" size="3"&gt;Here is the response from Developer Express support:&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoPlainText" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Consolas" size="3"&gt;&amp;quot;We fixed a similar bug in one of recent updates. Please upgrade your components to the most recent version.&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoPlainText" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Consolas" size="3"&gt;Currently, to fix the problem on your machine, please delete the following key from the system registry:&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoPlainText" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Consolas" size="3"&gt;HKEY_CURRENT_USER\Software\Developer Express\Designer\XtraVertGrid&amp;quot;&lt;/font&gt;&lt;/p&gt;&lt;font face="Consolas" size="3"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p class="MsoPlainText" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Consolas" size="3"&gt;You can check the state of your issue at: &lt;/font&gt;&lt;a href="https://www.devexpress.com/issue=B32034"&gt;&lt;font face="Consolas" color="#800080" size="3"&gt;https://www.devexpress.com/issue=B32034&lt;/font&gt;&lt;/a&gt;&amp;quot;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://dotnet.org.za/jpfouche/archive/2008/07/22/developer-express-v-7-2-issue-properties-missing-in-property-editor-on-vgrid-control.aspx&amp;amp;;subject=Developer+Express+v+7.2+issue+-+Properties+missing+in+property+editor+on+VGrid+Control" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/07/22/developer-express-v-7-2-issue-properties-missing-in-property-editor-on-vgrid-control.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://dotnet.org.za/jpfouche/archive/2008/07/22/developer-express-v-7-2-issue-properties-missing-in-property-editor-on-vgrid-control.aspx&amp;amp;;title=Developer+Express+v+7.2+issue+-+Properties+missing+in+property+editor+on+VGrid+Control" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/07/22/developer-express-v-7-2-issue-properties-missing-in-property-editor-on-vgrid-control.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://dotnet.org.za/jpfouche/archive/2008/07/22/developer-express-v-7-2-issue-properties-missing-in-property-editor-on-vgrid-control.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/07/22/developer-express-v-7-2-issue-properties-missing-in-property-editor-on-vgrid-control.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://dotnet.org.za/jpfouche/archive/2008/07/22/developer-express-v-7-2-issue-properties-missing-in-property-editor-on-vgrid-control.aspx&amp;amp;title=Developer+Express+v+7.2+issue+-+Properties+missing+in+property+editor+on+VGrid+Control" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/07/22/developer-express-v-7-2-issue-properties-missing-in-property-editor-on-vgrid-control.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://dotnet.org.za/jpfouche/archive/2008/07/22/developer-express-v-7-2-issue-properties-missing-in-property-editor-on-vgrid-control.aspx&amp;amp;;title=Developer+Express+v+7.2+issue+-+Properties+missing+in+property+editor+on+VGrid+Control" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/07/22/developer-express-v-7-2-issue-properties-missing-in-property-editor-on-vgrid-control.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://dotnet.org.za/jpfouche/archive/2008/07/22/developer-express-v-7-2-issue-properties-missing-in-property-editor-on-vgrid-control.aspx&amp;amp;;title=Developer+Express+v+7.2+issue+-+Properties+missing+in+property+editor+on+VGrid+Control&amp;amp;;top=1" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/07/22/developer-express-v-7-2-issue-properties-missing-in-property-editor-on-vgrid-control.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://dotnet.org.za/aggbug.aspx?PostID=487775" width="1" height="1"&gt;</description></item><item><title>WPAD.dat and Visual Sudio 2008 Web Tests - problem</title><link>http://dotnet.org.za/jpfouche/archive/2008/06/03/wpad-dat-and-visual-sudio-2008-web-tests-problem.aspx</link><pubDate>Tue, 03 Jun 2008 08:23:00 GMT</pubDate><guid isPermaLink="false">2d3a9e08-b70c-4031-ba2b-8f5282a2a59a:445241</guid><dc:creator>virasana</dc:creator><slash:comments>0</slash:comments><description>&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Calibri" size="3"&gt;We are using Visual Studio 2008 Team Edition for Software Testers to run web tests against our test website.&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Calibri" size="3"&gt;We find that our tests are failing on a particular request for a wpad.dat file.&amp;nbsp; No http error is reported.&amp;nbsp; &lt;/font&gt;&lt;/p&gt;&lt;font face="Calibri" size="3"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Calibri" size="3"&gt;After some searching on the internet, we discovered just what a wpad.dat file is:&lt;/font&gt;&lt;/p&gt;&lt;font face="Calibri" size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;b&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;WPAD (Web Proxy Autodiscovery Protocol)&lt;/font&gt;&lt;/font&gt;&lt;/b&gt; 
&lt;p class="MsoListParagraph" style="MARGIN:0in 0in 0pt 0.5in;TEXT-INDENT:-0.25in;mso-list:l1 level1 lfo1;"&gt;&lt;span style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font face="Calibri" size="3"&gt;Check &amp;nbsp;out a full description of what it is on &lt;/font&gt;&lt;a href="http://en.wikipedia.org/wiki/Web_Proxy_Autodiscovery_Protocol"&gt;&lt;font face="Calibri" color="#800080" size="3"&gt;http://en.wikipedia.org/wiki/Web_Proxy_Autodiscovery_Protocol&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p class="MsoListParagraph" style="MARGIN:0in 0in 0pt 0.5in;TEXT-INDENT:-0.25in;mso-list:l1 level1 lfo1;"&gt;&lt;span style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font face="Calibri" size="3"&gt;This is simply a method used by browsers to auto-discover the location of a proxy auto-config (.pac) file.&amp;nbsp; &lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoListParagraph" style="MARGIN:0in 0in 0pt 0.5in;TEXT-INDENT:-0.25in;mso-list:l1 level1 lfo1;"&gt;&lt;span style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font face="Calibri" size="3"&gt;You can set this up in your network through one of two methods:&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoListParagraph" style="MARGIN:0in 0in 0pt 1in;TEXT-INDENT:-0.25in;mso-list:l1 level2 lfo1;"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;o&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font face="Calibri" size="3"&gt;DHCP&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoListParagraph" style="MARGIN:0in 0in 0pt 1in;TEXT-INDENT:-0.25in;mso-list:l1 level2 lfo1;"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;o&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font face="Calibri" size="3"&gt;DNS&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoListParagraph" style="MARGIN:0in 0in 0pt 0.5in;TEXT-INDENT:-0.25in;mso-list:l1 level1 lfo1;"&gt;&lt;span style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font face="Calibri" size="3"&gt;If your network is not configured for WPAD, you may have problems if your browsers are configured to “autodetect”.&lt;/font&gt;&lt;/p&gt;&lt;font face="Calibri" size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;b&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Solution to our problem&lt;/font&gt;&lt;/font&gt;&lt;/b&gt; 
&lt;p class="MsoListParagraph" style="MARGIN:0in 0in 0pt 0.5in;TEXT-INDENT:-0.25in;mso-list:l2 level1 lfo2;"&gt;&lt;span style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font face="Calibri" size="3"&gt;Internet Explorer:&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoListParagraph" style="MARGIN:0in 0in 0pt 1in;TEXT-INDENT:-0.25in;mso-list:l2 level2 lfo2;"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;o&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font face="Calibri" size="3"&gt;/ Internet Options / Connections / LAN Settings &lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoListParagraph" style="MARGIN:0in 0in 0pt 1in;TEXT-INDENT:-0.25in;mso-list:l2 level2 lfo2;"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;o&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font face="Calibri" size="3"&gt;Turn OFF the option to automatically detect proxy settings.&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoListParagraph" style="MARGIN:0in 0in 0pt 0.5in;TEXT-INDENT:-0.25in;mso-list:l2 level1 lfo2;"&gt;&lt;span style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font face="Calibri" size="3"&gt;Contact network admin to see whether wpad is correctly configured.&lt;/font&gt;&lt;/p&gt;&lt;font face="Calibri" size="3"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Calibri" size="3"&gt;The problem occurs for us ONLY when using the web test interface.&amp;nbsp; Through the browser, everything is OK.&amp;nbsp; We have decided to configure IE and consider the test to have passed.&amp;nbsp; &lt;/font&gt;&lt;/p&gt;&lt;font face="Calibri" size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;b&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Requirements to get WPAD to work properly (from WIKIPEDIA)&lt;/font&gt;&lt;/font&gt;&lt;/b&gt; 
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Calibri" size="3"&gt;In order for WPAD to work, a few requirements have to be met:&lt;/font&gt;&lt;/p&gt;&lt;font face="Calibri" size="3"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p class="MsoListParagraph" style="MARGIN:0in 0in 0pt 0.5in;TEXT-INDENT:-0.25in;mso-list:l0 level1 lfo3;"&gt;&lt;span style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font face="Calibri" size="3"&gt;If you want to use DHCP, then the DHCP must be configured to serve up the &amp;quot;site-local&amp;quot; option 252 (&amp;quot;auto-proxy-config&amp;quot;) with a string value of &amp;quot;&lt;/font&gt;&lt;a href="http://xxx.yyy.zzz.qqq/wpad.dat"&gt;&lt;font face="Calibri" color="#0000ff" size="3"&gt;http://xxx.yyy.zzz.qqq/wpad.dat&lt;/font&gt;&lt;/a&gt;&lt;font face="Calibri" size="3"&gt;&amp;quot; (without the quotes) where xxx.yyy.zzz.qqq is the address of a web server (either IP or DNS). &lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoListParagraph" style="MARGIN:0in 0in 0pt 0.5in;TEXT-INDENT:-0.25in;mso-list:l0 level1 lfo3;"&gt;&lt;span style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font face="Calibri" size="3"&gt;If you want to use DNS, then a DNS entry is needed for a host named WPAD. &lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoListParagraph" style="MARGIN:0in 0in 0pt 0.5in;TEXT-INDENT:-0.25in;mso-list:l0 level1 lfo3;"&gt;&lt;span style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font face="Calibri" size="3"&gt;The host WPAD must be able to serve a web page. &lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoListParagraph" style="MARGIN:0in 0in 0pt 0.5in;TEXT-INDENT:-0.25in;mso-list:l0 level1 lfo3;"&gt;&lt;span style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font face="Calibri" size="3"&gt;In both cases, the web server must be configured to set up dat files with a MIME type of &amp;quot;application/x-ns-proxy-autoconfig&amp;quot;. &lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoListParagraph" style="MARGIN:0in 0in 0pt 0.5in;TEXT-INDENT:-0.25in;mso-list:l0 level1 lfo3;"&gt;&lt;span style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font face="Calibri" size="3"&gt;The file named wpad.dat must be located in the WPAD web site&amp;#39;s root directory. &lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoListParagraph" style="MARGIN:0in 0in 0pt 0.5in;TEXT-INDENT:-0.25in;mso-list:l0 level1 lfo3;"&gt;&lt;span style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font face="Calibri" size="3"&gt;Examples for PAC files are shown in Proxy auto-config. &lt;/font&gt;&lt;/p&gt;&lt;span style="BACKGROUND:yellow;FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-highlight:yellow;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="BACKGROUND:yellow;mso-highlight:yellow;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Use caution when configuring a WPAD server in a virtual hosting environment. When automatic proxy detection is used, Internet Explorer sends a &amp;quot;Host: &amp;lt;IP address&amp;gt;&amp;quot; header and Firefox sends a &amp;quot;Host: wpad&amp;quot; header. This is unexpected behavior, therefore, it is recommended that the wpad.dat file be hosted under the default Virtual Host rather than its own.&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Calibri" size="3"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Calibri" size="3"&gt;Note the last point, which indicates potential problems when using virtual hosting.&amp;nbsp; What is “virtual hosting”?&amp;nbsp; It is the procedure of serving up the same website from multiple host header names or IP addresses – this has been employed in our project.&amp;nbsp; This indicates a potential source for our problem, which you might want to investigate if you experience the same problem.&lt;/font&gt;&lt;/p&gt;&lt;font face="Calibri" size="3"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Calibri" size="3"&gt;Happy web testing!&lt;/font&gt;&lt;/p&gt;&lt;font face="Calibri" size="3"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Calibri" size="3"&gt;Kind Regards&lt;/font&gt;&lt;/p&gt;&lt;font face="Calibri"&gt;&lt;font size="3"&gt;Jean-Pierre Fouche&lt;/font&gt;&lt;i&gt;&lt;span style="FONT-SIZE:8pt;COLOR:#1f497d;"&gt; &lt;/span&gt;&lt;/i&gt;&lt;i&gt;&lt;span style="FONT-SIZE:8pt;COLOR:#1f497d;mso-ansi-language:EN-ZA;"&gt;&lt;/span&gt;&lt;/i&gt;&lt;/font&gt;&lt;font face="Calibri" size="3"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://dotnet.org.za/jpfouche/archive/2008/06/03/wpad-dat-and-visual-sudio-2008-web-tests-problem.aspx&amp;amp;;subject=WPAD.dat+and+Visual+Sudio+2008+Web+Tests+-+problem" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/06/03/wpad-dat-and-visual-sudio-2008-web-tests-problem.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://dotnet.org.za/jpfouche/archive/2008/06/03/wpad-dat-and-visual-sudio-2008-web-tests-problem.aspx&amp;amp;;title=WPAD.dat+and+Visual+Sudio+2008+Web+Tests+-+problem" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/06/03/wpad-dat-and-visual-sudio-2008-web-tests-problem.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://dotnet.org.za/jpfouche/archive/2008/06/03/wpad-dat-and-visual-sudio-2008-web-tests-problem.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/06/03/wpad-dat-and-visual-sudio-2008-web-tests-problem.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://dotnet.org.za/jpfouche/archive/2008/06/03/wpad-dat-and-visual-sudio-2008-web-tests-problem.aspx&amp;amp;title=WPAD.dat+and+Visual+Sudio+2008+Web+Tests+-+problem" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/06/03/wpad-dat-and-visual-sudio-2008-web-tests-problem.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://dotnet.org.za/jpfouche/archive/2008/06/03/wpad-dat-and-visual-sudio-2008-web-tests-problem.aspx&amp;amp;;title=WPAD.dat+and+Visual+Sudio+2008+Web+Tests+-+problem" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/06/03/wpad-dat-and-visual-sudio-2008-web-tests-problem.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://dotnet.org.za/jpfouche/archive/2008/06/03/wpad-dat-and-visual-sudio-2008-web-tests-problem.aspx&amp;amp;;title=WPAD.dat+and+Visual+Sudio+2008+Web+Tests+-+problem&amp;amp;;top=1" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/06/03/wpad-dat-and-visual-sudio-2008-web-tests-problem.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://dotnet.org.za/aggbug.aspx?PostID=445241" width="1" height="1"&gt;</description></item><item><title>Migrating Sharepoint 2007 List to Calendar</title><link>http://dotnet.org.za/jpfouche/archive/2008/03/25/migrating-sharepoint-2007-list-to-calendar.aspx</link><pubDate>Tue, 25 Mar 2008 16:47:35 GMT</pubDate><guid isPermaLink="false">2d3a9e08-b70c-4031-ba2b-8f5282a2a59a:394711</guid><dc:creator>virasana</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Whew... That was a long and arduous process.&lt;/p&gt;  &lt;p&gt;If you have tried migrating lists in Sharepoint 2007, you have probably tried exporting the source list to Excel and then Exporting the Excel worksheet to the new list in Sharepoint.&amp;#160; The problem with this approach is that it doesn&amp;#39;t work for Calendars.&amp;#160; When you export a list from Excel, it creates a new List, which is not a Calendar type.&amp;#160; THis means that you cannot &amp;quot;Connect to Outlook&amp;quot;, resulting in a poor user experience.&lt;/p&gt;  &lt;p&gt;I tried numerous ways of migrating the content, but here&amp;#39;s my solution (using Access 2007 with linked tables).&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;1.Open a new access database from the source list, and link a new table to the destination (My Source list was Readiness Sessions; my target was Readiness Sessions Calendar).&lt;/p&gt;    &lt;p&gt;2.In a Module, execute the following (rather horrible) algorithm:&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#39;This code is posted &amp;#39;as-is&amp;#39; and requires alteration...&lt;/p&gt;  &lt;p&gt;Function DoIt() &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; Dim strValue    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Dim conn As New ADODB.Connection     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Dim rs As New ADODB.Recordset     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Dim strSql As String     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Dim fld As ADODB.Field     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Dim strFieldList As String     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Dim strValueList As String     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Dim n As Integer     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Set conn = CodeProject.Connection     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; conn.Execute &amp;quot;DELETE FROM [Readiness Sessions Calendar]&amp;quot;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; sql = &amp;quot;select * from [readiness sessions]&amp;quot;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Set rs = conn.Execute(sql)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; strFieldList = &amp;quot;&amp;quot;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; strValueList = &amp;quot;&amp;quot;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; strSql = &amp;quot;&amp;quot;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; While Not rs.EOF     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; n = n + 1     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; For m = 1 To 17     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; If m &amp;lt; 13 Or m &amp;gt; 15 Then     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Set fld = rs.Fields(m)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; If Not IsNull(fld.Value) Then     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; strValue = Replace(fld.Value, &amp;quot;&amp;#39;&amp;quot;, &amp;quot;&amp;#39;&amp;#39;&amp;quot;)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Else     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; strValue = fld.Value     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; End If     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; If strValue &amp;lt;&amp;gt; &amp;quot;&amp;#39;&amp;#39;&amp;quot; Then     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; If m = 1 Then &amp;#39;Event Name     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; strSql = &amp;quot;INSERT INTO [Readiness Sessions Calendar] &amp;quot;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; strSql = strSql &amp;amp; &amp;quot;([&amp;quot; &amp;amp; fld.Name &amp;amp; &amp;quot;]) &amp;quot;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; strSql = strSql &amp;amp; &amp;quot;VALUES (&amp;#39;&amp;quot; &amp;amp; strValue &amp;amp; &amp;quot;&amp;#39;)&amp;quot;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Debug.Print strSql     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; conn.Execute strSql     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Else     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; If m &amp;lt;&amp;gt; 8 Then     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; strSql = &amp;quot;UPDATE [Readiness Sessions Calendar] SET [&amp;quot; &amp;amp; fld.Name &amp;amp; &amp;quot;] = &amp;#39;&amp;quot; &amp;amp; Replace(rs.Fields(m).Value, &amp;quot;&amp;#39;&amp;quot;, &amp;quot;&amp;quot;) &amp;amp; &amp;quot;&amp;#39; WHERE [Event Name] = &amp;#39;&amp;quot; &amp;amp; Replace(rs(&amp;quot;Event Name&amp;quot;), &amp;quot;&amp;#39;&amp;quot;, &amp;quot;&amp;quot;) &amp;amp; &amp;quot;&amp;#39;&amp;quot;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; conn.Execute (strSql)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Debug.Print strSql     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; End If     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; End If     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; End If     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; End If     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Next     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; rs.MoveNext     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Wend&lt;/p&gt;  &lt;p&gt;Exit Function&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://dotnet.org.za/jpfouche/archive/2008/03/25/migrating-sharepoint-2007-list-to-calendar.aspx&amp;amp;;subject=Migrating+Sharepoint+2007+List+to+Calendar" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/03/25/migrating-sharepoint-2007-list-to-calendar.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://dotnet.org.za/jpfouche/archive/2008/03/25/migrating-sharepoint-2007-list-to-calendar.aspx&amp;amp;;title=Migrating+Sharepoint+2007+List+to+Calendar" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/03/25/migrating-sharepoint-2007-list-to-calendar.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://dotnet.org.za/jpfouche/archive/2008/03/25/migrating-sharepoint-2007-list-to-calendar.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/03/25/migrating-sharepoint-2007-list-to-calendar.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://dotnet.org.za/jpfouche/archive/2008/03/25/migrating-sharepoint-2007-list-to-calendar.aspx&amp;amp;title=Migrating+Sharepoint+2007+List+to+Calendar" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/03/25/migrating-sharepoint-2007-list-to-calendar.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://dotnet.org.za/jpfouche/archive/2008/03/25/migrating-sharepoint-2007-list-to-calendar.aspx&amp;amp;;title=Migrating+Sharepoint+2007+List+to+Calendar" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/03/25/migrating-sharepoint-2007-list-to-calendar.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://dotnet.org.za/jpfouche/archive/2008/03/25/migrating-sharepoint-2007-list-to-calendar.aspx&amp;amp;;title=Migrating+Sharepoint+2007+List+to+Calendar&amp;amp;;top=1" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/03/25/migrating-sharepoint-2007-list-to-calendar.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://dotnet.org.za/aggbug.aspx?PostID=394711" width="1" height="1"&gt;</description><category domain="http://dotnet.org.za/jpfouche/archive/tags/Sharepoint/default.aspx">Sharepoint</category></item><item><title>Tech Titbits</title><link>http://dotnet.org.za/jpfouche/archive/2008/02/12/tech-titbits.aspx</link><pubDate>Tue, 12 Feb 2008 19:56:42 GMT</pubDate><guid isPermaLink="false">2d3a9e08-b70c-4031-ba2b-8f5282a2a59a:284586</guid><dc:creator>virasana</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Google Code Search     &lt;br /&gt;&lt;/strong&gt;Looking for a particular snippet of code?&amp;#160; Use &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.google.com/codesearch"&gt;http://www.google.com/codesearch&lt;/a&gt; (simple search) or    &lt;br /&gt;&lt;a title="http://www.google.com/codesearch/advanced_code_search?hl=en" href="http://www.google.com/codesearch/advanced_code_search?hl=en"&gt;http://www.google.com/codesearch/advanced_code_search?hl=en&lt;/a&gt; (advanced search)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://dotnet.org.za/blogs/jpfouche/WindowsLiveWriter/TechTitbits_111BC/image_6.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="189" alt="image" src="http://dotnet.org.za/blogs/jpfouche/WindowsLiveWriter/TechTitbits_111BC/image_thumb_2.png" width="551" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;SQL Server&lt;/strong&gt; &lt;strong&gt;2005 Service Manager      &lt;br /&gt;&lt;/strong&gt;If you are looking for a &amp;quot;retro&amp;quot; look on your desktop, how about this nice tool from SQLDBATips.com - a Service Manager for SQL 2005, similar to the one used in Enterprise Manager for SQL 2000.&amp;#160; On my Vista OS, it comes with a curiosity - the message &amp;quot;Service Stoppe&amp;quot; at the bottom of the screen!&amp;#160; Use this aplication to manage all the SQL Server instances on your machine.&amp;#160;&amp;#160; Mine works only with local instances.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://dotnet.org.za/blogs/jpfouche/WindowsLiveWriter/TechTitbits_111BC/image_4.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="205" alt="image" src="http://dotnet.org.za/blogs/jpfouche/WindowsLiveWriter/TechTitbits_111BC/image_thumb_1.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.sqldbatips.com/showarticle.asp?ID=46" href="http://www.sqldbatips.com/showarticle.asp?ID=46"&gt;http://www.sqldbatips.com/showarticle.asp?ID=46&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;.iso Reader for Vista      &lt;br /&gt;&lt;/strong&gt;If you are looking for an .iso reader for &lt;strong&gt;&lt;em&gt;64-bit&lt;/em&gt;&lt;/strong&gt; Vista, use &lt;a href="http://www.magiciso.com/download.htm" target="_blank"&gt;MagicISO&lt;/a&gt;. The screenshot below shows you what it can do:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://dotnet.org.za/blogs/jpfouche/WindowsLiveWriter/TechTitbits_111BC/image_2.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="244" alt="image" src="http://dotnet.org.za/blogs/jpfouche/WindowsLiveWriter/TechTitbits_111BC/image_thumb.png" width="154" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Access &lt;em&gt;Manage Network Connections&lt;/em&gt; in Vista       &lt;br /&gt;&lt;/strong&gt;- Add a desktop/quick launch shortcut to C:\Windows\System32\ncpa.cpl     &lt;br /&gt;- Type &lt;strong&gt;ncpa.cpl&lt;/strong&gt; plus enter from the start menu.&amp;#160; Whew! :(     &lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://dotnet.org.za/jpfouche/archive/2008/02/12/tech-titbits.aspx&amp;amp;;subject=Tech+Titbits" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/02/12/tech-titbits.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://dotnet.org.za/jpfouche/archive/2008/02/12/tech-titbits.aspx&amp;amp;;title=Tech+Titbits" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/02/12/tech-titbits.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://dotnet.org.za/jpfouche/archive/2008/02/12/tech-titbits.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/02/12/tech-titbits.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://dotnet.org.za/jpfouche/archive/2008/02/12/tech-titbits.aspx&amp;amp;title=Tech+Titbits" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/02/12/tech-titbits.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://dotnet.org.za/jpfouche/archive/2008/02/12/tech-titbits.aspx&amp;amp;;title=Tech+Titbits" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/02/12/tech-titbits.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://dotnet.org.za/jpfouche/archive/2008/02/12/tech-titbits.aspx&amp;amp;;title=Tech+Titbits&amp;amp;;top=1" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/02/12/tech-titbits.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://dotnet.org.za/aggbug.aspx?PostID=284586" width="1" height="1"&gt;</description><category domain="http://dotnet.org.za/jpfouche/archive/tags/Tips/default.aspx">Tips</category></item><item><title>Renaming your SharePoint Virtual Machine</title><link>http://dotnet.org.za/jpfouche/archive/2008/02/12/renaming-your-sharepoint-virtual-machine.aspx</link><pubDate>Tue, 12 Feb 2008 17:28:11 GMT</pubDate><guid isPermaLink="false">2d3a9e08-b70c-4031-ba2b-8f5282a2a59a:322688</guid><dc:creator>virasana</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;In my previous post entitled SharePoint Development Environment Scenarios, I posted a diagram recommending deployment using virtual machines on each developer&amp;#39;s desktop.&amp;#160; The practical upshot of this is that you will need to store a central &amp;quot;base&amp;quot; VM somewhere - perhaps on a file share - and copy this to each developer&amp;#39;s desktop whenever a new developer arrives.&amp;#160; &lt;br /&gt;    &lt;br /&gt;A problem you will encounter when doing this is that you will get an IP / Name conflict when you first boot the server - you now have two machines trying to access the same network resource, and they have the same name!&amp;#160; Clinton Cherry outlines a procedure to solve this problem &lt;a href="http://clintcherry.spaces.live.com/Blog/cns!AEC0DCBC460E45B9!396.entry?action=post&amp;amp;wa=wsignin1.0" target="_blank"&gt;here&lt;/a&gt;.&amp;#160; &lt;/p&gt;  &lt;p&gt;The simple procedure I followed was:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;1.Run the command line indicated i.e. stsadm -o setconfigdb -databaseserver &amp;quot;nameofdatabaseserver\instance&amp;quot; -farmuser &amp;quot;networkserviceaccount&amp;quot; -farmpassword &amp;quot;networkserviceaccountpassword&amp;quot; where I found that you had to remove the computer name if using a local account for the farmuser.&amp;#160; This is because the computer name has changed, and somewhere along the line the config wizard tries to use the old computer name.&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;2.Grant access to the new farmuser account on the relevant databases in SQL Server. The wizard will fail if it cannot access the databases.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;The method worked well for me.&amp;#160; Check it out on Clinton Cherry&amp;#39;s blog.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;An update to this post was presented to me by my colleague, Joseph Neimann, who recently tried the process again.&amp;#160; Here it is:&lt;/p&gt;  &lt;p&gt;&amp;quot;The final verdict was that inorder to effectively change a name you need to remove the domain from the user name before you can rename. &lt;/p&gt;  &lt;p&gt;So first run&lt;/p&gt;  &lt;p&gt;stsadm -o setconfigdb -databaseserver &amp;quot;Old_databaseserver\instance&amp;quot; -farmuser &amp;quot;networkserviceaccount&amp;quot; -farmpassword &amp;quot;networkserviceaccountpassword&amp;quot;&lt;/p&gt;  &lt;p&gt;Then Rename server&lt;/p&gt;  &lt;p&gt;Then Run &lt;/p&gt;  &lt;p&gt;stsadm -o setconfigdb -databaseserver &amp;quot;New_databaseserver\instance&amp;quot; -farmuser &amp;quot;networkserviceaccount&amp;quot; -farmpassword &amp;quot;networkserviceaccountpassword&amp;quot;&lt;/p&gt;  &lt;p&gt;Then run the wizard. &lt;/p&gt;  &lt;p&gt;Success.&amp;quot;&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://dotnet.org.za/jpfouche/archive/2008/02/12/renaming-your-sharepoint-virtual-machine.aspx&amp;amp;;subject=Renaming+your+SharePoint+Virtual+Machine" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/02/12/renaming-your-sharepoint-virtual-machine.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://dotnet.org.za/jpfouche/archive/2008/02/12/renaming-your-sharepoint-virtual-machine.aspx&amp;amp;;title=Renaming+your+SharePoint+Virtual+Machine" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/02/12/renaming-your-sharepoint-virtual-machine.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://dotnet.org.za/jpfouche/archive/2008/02/12/renaming-your-sharepoint-virtual-machine.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/02/12/renaming-your-sharepoint-virtual-machine.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://dotnet.org.za/jpfouche/archive/2008/02/12/renaming-your-sharepoint-virtual-machine.aspx&amp;amp;title=Renaming+your+SharePoint+Virtual+Machine" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/02/12/renaming-your-sharepoint-virtual-machine.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://dotnet.org.za/jpfouche/archive/2008/02/12/renaming-your-sharepoint-virtual-machine.aspx&amp;amp;;title=Renaming+your+SharePoint+Virtual+Machine" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/02/12/renaming-your-sharepoint-virtual-machine.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://dotnet.org.za/jpfouche/archive/2008/02/12/renaming-your-sharepoint-virtual-machine.aspx&amp;amp;;title=Renaming+your+SharePoint+Virtual+Machine&amp;amp;;top=1" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/02/12/renaming-your-sharepoint-virtual-machine.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://dotnet.org.za/aggbug.aspx?PostID=322688" width="1" height="1"&gt;</description></item><item><title>Giving "Performant" Presentations</title><link>http://dotnet.org.za/jpfouche/archive/2008/02/12/giving-quot-performant-quot-presentations.aspx</link><pubDate>Tue, 12 Feb 2008 17:27:29 GMT</pubDate><guid isPermaLink="false">2d3a9e08-b70c-4031-ba2b-8f5282a2a59a:322687</guid><dc:creator>virasana</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Here are some links to help you to deliver better presentations...&lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.beyondbullets.com/" href="http://www.beyondbullets.com/"&gt;http://www.beyondbullets.com/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="http://headrush.typepad.com/creating_passionate_users/" href="http://headrush.typepad.com/creating_passionate_users/"&gt;http://headrush.typepad.com/creating_passionate_users/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I will be updating this page.&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://dotnet.org.za/jpfouche/archive/2008/02/12/giving-quot-performant-quot-presentations.aspx&amp;amp;;subject=Giving+%26quot%3bPerformant%26quot%3b+Presentations" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/02/12/giving-quot-performant-quot-presentations.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://dotnet.org.za/jpfouche/archive/2008/02/12/giving-quot-performant-quot-presentations.aspx&amp;amp;;title=Giving+%26quot%3bPerformant%26quot%3b+Presentations" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/02/12/giving-quot-performant-quot-presentations.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://dotnet.org.za/jpfouche/archive/2008/02/12/giving-quot-performant-quot-presentations.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/02/12/giving-quot-performant-quot-presentations.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://dotnet.org.za/jpfouche/archive/2008/02/12/giving-quot-performant-quot-presentations.aspx&amp;amp;title=Giving+%26quot%3bPerformant%26quot%3b+Presentations" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/02/12/giving-quot-performant-quot-presentations.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://dotnet.org.za/jpfouche/archive/2008/02/12/giving-quot-performant-quot-presentations.aspx&amp;amp;;title=Giving+%26quot%3bPerformant%26quot%3b+Presentations" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/02/12/giving-quot-performant-quot-presentations.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://dotnet.org.za/jpfouche/archive/2008/02/12/giving-quot-performant-quot-presentations.aspx&amp;amp;;title=Giving+%26quot%3bPerformant%26quot%3b+Presentations&amp;amp;;top=1" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/02/12/giving-quot-performant-quot-presentations.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://dotnet.org.za/aggbug.aspx?PostID=322687" width="1" height="1"&gt;</description></item><item><title>IIS Redirection [with Sharepoint 2007] - URL and Wildcard Redirection</title><link>http://dotnet.org.za/jpfouche/archive/2008/02/08/iis-redirection-with-sharepoint-2007-url-and-wildcard-redirection.aspx</link><pubDate>Fri, 08 Feb 2008 21:45:10 GMT</pubDate><guid isPermaLink="false">2d3a9e08-b70c-4031-ba2b-8f5282a2a59a:316813</guid><dc:creator>virasana</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;If you are thinking of using redirection on your sharepoint site - e.g. you want to redirect all http requests to https, or perhaps you want to retire an old URL, you have perhaps considered some of these options:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;1.&amp;#160; USE A QUICK AND DIRTY SCRIPT&lt;/strong&gt;       &lt;br /&gt;Redirect using a script such as this one in .asp (I am using .asp for ease of scripting):&lt;/p&gt;    &lt;p&gt;&amp;lt;% &lt;/p&gt;    &lt;p&gt;Response.Redirect(&lt;a href="https://mysite.co.za"&gt;https://mysite.co.za&lt;/a&gt; &amp;amp; Request.ServerVariables(&amp;quot;URL&amp;quot;) )&lt;/p&gt;    &lt;p&gt;%&amp;gt;&lt;/p&gt;    &lt;p&gt;You might even consider using the HTTP_REFERER Server Variable, and try to transform this into your new site&amp;#39;s URL.&lt;/p&gt;    &lt;p&gt;You save this script as default.asp, and set it as the default document in IIS.&lt;/p&gt;    &lt;p&gt;Problem with this approach?&amp;#160; &lt;/p&gt;    &lt;p&gt;a.Works great on your site if you only want to access the root!&amp;#160; What about &lt;a href="http://mysite/mypage01.aspx"&gt;http://mysite/mypage01.aspx&lt;/a&gt;?       &lt;br /&gt;b.&amp;#160; HTTP_REFERER is dangerously unreliable - e.g. it does not work if you enter the address into the browser and hit enter - you have to click a link!&amp;#160; It will return an empty value.       &lt;br /&gt;c:&amp;#160; URL will return the current URL, when what you really want is the URL that the user typed into the browser (see point 2 for trouble with this)       &lt;br /&gt;&amp;#160; &lt;/p&gt;    &lt;p&gt;&lt;strong&gt;2.&amp;#160; CUSTOM ERROR PAGES        &lt;br /&gt;&lt;/strong&gt;You have failed on point 1, so what about using custom error pages to specify a handler on 404 errors - say you redirect to redirect.asp every time you have a 404.&amp;#160; You can configure this in IIS in the Custom Errors tab - and also in web.config (I could not get this to work).&amp;#160; Problems with this are as follows:&lt;/p&gt;    &lt;p&gt;a.You find that your script cannot access the original URL that the user typed in - if you try HTTP_REFERER, you get an empty value, and if you use URL, you get the current URL i.e. redirect.asp!&amp;#160; Next option...&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;3.&amp;#160; IHttpHandler&lt;/strong&gt;       &lt;br /&gt;Try writing an IHttpHandler to handle all requests to the sharepoint site, and do the transform in C# code.&amp;#160; This sounds like an excellent idea, and it ALMOST worked for me.&amp;#160; Then I read an article stating that the handler cannot work on ANY extension - you have to configure IIS and the handler for a specific extension.&amp;#160; I also found that I was having trouble when I deployed my &amp;quot;working&amp;quot; solution (file system based) to an IIS-deployed website.&amp;#160; The file system based one worked, whereas the IIS-based one did not.&amp;#160; I believe this might work, and this approach needs more investigation.&amp;#160; But this took a lot of coding!&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;4.&amp;#160; CONFIGURE IIS&lt;/strong&gt;       &lt;br /&gt;Now, the approach that worked for me... Set it up in IIS there is a setting to get content from &amp;quot;a redirection to a URL&amp;quot;.&amp;#160; Here, you can specify the following:&lt;/p&gt;    &lt;p&gt;- the &amp;quot;target&amp;quot; URL is the domain of the new site you want to direct to e.g. &lt;a href="https://mysite.co.za"&gt;https://mysite.co.za&lt;/a&gt;.       &lt;br /&gt;- specify an EXACT MATCH (it is a check box)       &lt;br /&gt;- specify wildcard patterns to force querystrings to be used.&amp;#160; My URL in the target textbox was : &lt;a href="https://mysite.com$Q"&gt;https://mysite.com$Q&lt;/a&gt; (the $Q means &amp;quot;include the querystring)!       &lt;br /&gt;      &lt;br /&gt;The site you need to visit in order to understand redirection strings is here &lt;a title="http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/6b855a7a-0884-4508-ba95-079f38c77017.mspx?mfr=true" href="http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/6b855a7a-0884-4508-ba95-079f38c77017.mspx?mfr=true"&gt;http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/6b855a7a-0884-4508-ba95-079f38c77017.mspx?mfr=true&lt;/a&gt;       &lt;br /&gt;      &lt;br /&gt;&lt;strong&gt;5.&amp;#160; DISABLE SHAREPOINT ON YOUR OLD SITE        &lt;br /&gt;&lt;/strong&gt;Note that if you want a Sharepoint site to stop being a Sharepoint site, and to start serving up your scripts, you need to do but one small change - rename global.asax to global.asax.backup. If you do this, Sharepoint no longer implements an ApplicationHandler (which is specfied in global.asax) as Sharepoint can no linger find the global.asax file!&amp;#160; IIS will then process scripts as usual.&lt;/p&gt;    &lt;p&gt;I would not say that this was a &amp;quot;painless&amp;quot; exercise, but it is a few minutes of work when you know how to set it up!&lt;/p&gt;&lt;/blockquote&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://dotnet.org.za/jpfouche/archive/2008/02/08/iis-redirection-with-sharepoint-2007-url-and-wildcard-redirection.aspx&amp;amp;;subject=IIS+Redirection+%5bwith+Sharepoint+2007%5d+-+URL+and+Wildcard+Redirection" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/02/08/iis-redirection-with-sharepoint-2007-url-and-wildcard-redirection.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://dotnet.org.za/jpfouche/archive/2008/02/08/iis-redirection-with-sharepoint-2007-url-and-wildcard-redirection.aspx&amp;amp;;title=IIS+Redirection+%5bwith+Sharepoint+2007%5d+-+URL+and+Wildcard+Redirection" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/02/08/iis-redirection-with-sharepoint-2007-url-and-wildcard-redirection.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://dotnet.org.za/jpfouche/archive/2008/02/08/iis-redirection-with-sharepoint-2007-url-and-wildcard-redirection.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/02/08/iis-redirection-with-sharepoint-2007-url-and-wildcard-redirection.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://dotnet.org.za/jpfouche/archive/2008/02/08/iis-redirection-with-sharepoint-2007-url-and-wildcard-redirection.aspx&amp;amp;title=IIS+Redirection+%5bwith+Sharepoint+2007%5d+-+URL+and+Wildcard+Redirection" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/02/08/iis-redirection-with-sharepoint-2007-url-and-wildcard-redirection.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://dotnet.org.za/jpfouche/archive/2008/02/08/iis-redirection-with-sharepoint-2007-url-and-wildcard-redirection.aspx&amp;amp;;title=IIS+Redirection+%5bwith+Sharepoint+2007%5d+-+URL+and+Wildcard+Redirection" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/02/08/iis-redirection-with-sharepoint-2007-url-and-wildcard-redirection.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://dotnet.org.za/jpfouche/archive/2008/02/08/iis-redirection-with-sharepoint-2007-url-and-wildcard-redirection.aspx&amp;amp;;title=IIS+Redirection+%5bwith+Sharepoint+2007%5d+-+URL+and+Wildcard+Redirection&amp;amp;;top=1" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/02/08/iis-redirection-with-sharepoint-2007-url-and-wildcard-redirection.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://dotnet.org.za/aggbug.aspx?PostID=316813" width="1" height="1"&gt;</description><category domain="http://dotnet.org.za/jpfouche/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://dotnet.org.za/jpfouche/archive/tags/Sharepoint/default.aspx">Sharepoint</category></item><item><title>IIS Redirection [with Sharepoint 2007] - URL and Wildcard Redirection</title><link>http://dotnet.org.za/jpfouche/archive/2008/02/08/iis-redirection-url-and-wildcard-redirection.aspx</link><pubDate>Fri, 08 Feb 2008 21:43:43 GMT</pubDate><guid isPermaLink="false">2d3a9e08-b70c-4031-ba2b-8f5282a2a59a:316812</guid><dc:creator>virasana</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;If you are thinking of using redirection on your sharepoint site - e.g. you want to redirect all http requests to https, or perhaps you want to retire an old URL, you have perhaps considered some of these options:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;1.&amp;#160; USE A QUICK AND DIRTY SCRIPT&lt;/strong&gt;      &lt;br /&gt;Redirect using a script such as this one in .asp (I am using .asp for ease of scripting):&lt;/p&gt;    &lt;p&gt;&amp;lt;% &lt;/p&gt;    &lt;p&gt;Response.Redirect(&lt;a href="https://mysite.co.za"&gt;https://mysite.co.za&lt;/a&gt; &amp;amp; Request.ServerVariables(&amp;quot;URL&amp;quot;) )&lt;/p&gt;    &lt;p&gt;%&amp;gt;&lt;/p&gt;    &lt;p&gt;You might even consider using the HTTP_REFERER Server Variable, and try to transform this into your new site&amp;#39;s URL.&lt;/p&gt;    &lt;p&gt;You save this script as default.asp, and set it as the default document in IIS.&lt;/p&gt;    &lt;p&gt;Problem with this approach?&amp;#160; &lt;/p&gt;    &lt;p&gt;a.Works great on your site if you only want to access the root!&amp;#160; What about &lt;a href="http://mysite/mypage01.aspx"&gt;http://mysite/mypage01.aspx&lt;/a&gt;?      &lt;br /&gt;b.&amp;#160; HTTP_REFERER is dangerously unreliable - e.g. it does not work if you enter the address into the browser and hit enter - you have to click a link!&amp;#160; It will return an empty value.      &lt;br /&gt;c:&amp;#160; URL will return the current URL, when what you really want is the URL that the user typed into the browser (see point 2 for trouble with this)      &lt;br /&gt;&amp;#160; &lt;/p&gt;    &lt;p&gt;&lt;strong&gt;2.&amp;#160; CUSTOM ERROR PAGES       &lt;br /&gt;&lt;/strong&gt;You have failed on point 1, so what about using custom error pages to specify a handler on 404 errors - say you redirect to redirect.asp every time you have a 404.&amp;#160; You can configure this in IIS in the Custom Errors tab - and also in web.config (I could not get this to work).&amp;#160; Problems with this are as follows:&lt;/p&gt;    &lt;p&gt;a.You find that your script cannot access the original URL that the user typed in - if you try HTTP_REFERER, you get an empty value, and if you use URL, you get the current URL i.e. redirect.asp!&amp;#160; Next option...&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;3.&amp;#160; IHttpHandler&lt;/strong&gt;      &lt;br /&gt;Try writing an IHttpHandler to handle all requests to the sharepoint site, and do the transform in C# code.&amp;#160; This sounds like an excellent idea, and it ALMOST worked for me.&amp;#160; Then I read an article stating that the handler cannot work on ANY extension - you have to configure IIS and the handler for a specific extension.&amp;#160; I also found that I was having trouble when I deployed my &amp;quot;working&amp;quot; solution (file system based) to an IIS-deployed website.&amp;#160; The file system based one worked, whereas the IIS-based one did not.&amp;#160; I believe this might work, and this approach needs more investigation.&amp;#160; But this took a lot of coding!&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;4.&amp;#160; CONFIGURE IIS&lt;/strong&gt;      &lt;br /&gt;Now, the approach that worked for me... Set it up in IIS there is a setting to get content from &amp;quot;a redirection to a URL&amp;quot;.&amp;#160; Here, you can specify the following:&lt;/p&gt;    &lt;p&gt;- the &amp;quot;target&amp;quot; URL is the domain of the new site you want to direct to e.g. &lt;a href="https://mysite.co.za"&gt;https://mysite.co.za&lt;/a&gt;.      &lt;br /&gt;- specify an EXACT MATCH (it is a check box)      &lt;br /&gt;- specify wildcard patterns to force querystrings to be used.&amp;#160; My URL in the target textbox was : &lt;a href="https://mysite.com$Q"&gt;https://mysite.com$Q&lt;/a&gt; (the $Q means &amp;quot;include the querystring)!      &lt;br /&gt;      &lt;br /&gt;The site you need to visit in order to understand redirection strings is here &lt;a title="http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/6b855a7a-0884-4508-ba95-079f38c77017.mspx?mfr=true" href="http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/6b855a7a-0884-4508-ba95-079f38c77017.mspx?mfr=true"&gt;http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/6b855a7a-0884-4508-ba95-079f38c77017.mspx?mfr=true&lt;/a&gt;      &lt;br /&gt;      &lt;br /&gt;&lt;strong&gt;5.&amp;#160; DISABLE SHAREPOINT ON YOUR OLD SITE       &lt;br /&gt;&lt;/strong&gt;Note that if you want a Sharepoint site to stop being a Sharepoint site, and to start serving up your scripts, you need to do but one small change - rename global.asax to global.asax.backup. If you do this, Sharepoint no longer implements an ApplicationHandler (which is specfied in global.asax) as Sharepoint can no linger find the global.asax file!&amp;#160; IIS will then process scripts as usual.&lt;/p&gt;    &lt;p&gt;I would not say that this was a &amp;quot;painless&amp;quot; exercise, but it is a few minutes of work when you know how to set it up!&lt;/p&gt;&lt;/blockquote&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://dotnet.org.za/jpfouche/archive/2008/02/08/iis-redirection-url-and-wildcard-redirection.aspx&amp;amp;;subject=IIS+Redirection+%5bwith+Sharepoint+2007%5d+-+URL+and+Wildcard+Redirection" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/02/08/iis-redirection-url-and-wildcard-redirection.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://dotnet.org.za/jpfouche/archive/2008/02/08/iis-redirection-url-and-wildcard-redirection.aspx&amp;amp;;title=IIS+Redirection+%5bwith+Sharepoint+2007%5d+-+URL+and+Wildcard+Redirection" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/02/08/iis-redirection-url-and-wildcard-redirection.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://dotnet.org.za/jpfouche/archive/2008/02/08/iis-redirection-url-and-wildcard-redirection.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/02/08/iis-redirection-url-and-wildcard-redirection.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://dotnet.org.za/jpfouche/archive/2008/02/08/iis-redirection-url-and-wildcard-redirection.aspx&amp;amp;title=IIS+Redirection+%5bwith+Sharepoint+2007%5d+-+URL+and+Wildcard+Redirection" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/02/08/iis-redirection-url-and-wildcard-redirection.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://dotnet.org.za/jpfouche/archive/2008/02/08/iis-redirection-url-and-wildcard-redirection.aspx&amp;amp;;title=IIS+Redirection+%5bwith+Sharepoint+2007%5d+-+URL+and+Wildcard+Redirection" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/02/08/iis-redirection-url-and-wildcard-redirection.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://dotnet.org.za/jpfouche/archive/2008/02/08/iis-redirection-url-and-wildcard-redirection.aspx&amp;amp;;title=IIS+Redirection+%5bwith+Sharepoint+2007%5d+-+URL+and+Wildcard+Redirection&amp;amp;;top=1" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/02/08/iis-redirection-url-and-wildcard-redirection.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://dotnet.org.za/aggbug.aspx?PostID=316812" width="1" height="1"&gt;</description></item><item><title>Sharepoint Quibbles - Developer Readiness Training Adventures</title><link>http://dotnet.org.za/jpfouche/archive/2008/02/08/sharepoint-quibbles-developer-readiness-training-adventures.aspx</link><pubDate>Fri, 08 Feb 2008 21:19:27 GMT</pubDate><guid isPermaLink="false">2d3a9e08-b70c-4031-ba2b-8f5282a2a59a:316784</guid><dc:creator>virasana</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;I am providing Sharepoint training (&amp;quot;Deep Dive&amp;quot;) this week (28th January 2008).&amp;#160;&amp;#160; Here, in note form,&amp;#160; are some of the questions and problems we have been experiencing:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;1.&amp;#160;&amp;#160;&amp;#160;&amp;#160; Features.&amp;#160; &lt;br /&gt;&lt;/strong&gt;We find that multiple instances of our feature are being deployed!&amp;#160; Why is this happening?&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;Learning:        &lt;br /&gt;&lt;/strong&gt;The feature we are trying to deploy was already installed on the virtual machine.&amp;#160; We did not uninstall the original feature, but rather added a new one, with a different GUID, and the same title.&amp;#160; Hence, we have multiple &amp;quot;HelloWorld&amp;quot; features.&lt;/p&gt;    &lt;p&gt;Remember that a feature is defined by the following:      &lt;br /&gt;-&amp;#160;&amp;#160;&amp;#160; A GUID which causes a unique &lt;strong&gt;feature installation&lt;/strong&gt; in Sharepoint.       &lt;br /&gt;-&amp;#160;&amp;#160;&amp;#160; Feature.xml, elements.xml fand other &lt;strong&gt;resource files&lt;/strong&gt; which are copied to the &amp;quot;12&amp;quot; hive during deployment.&amp;#160; These can be cross-referenced by multiple installed features.&amp;#160; We noticed that certain students were changing the title in feature.xml, whereas multiple features reflected the change in Sharepoint!&amp;#160; This is to do with cross-referencing.       &lt;br /&gt;-&amp;#160;&amp;#160;&amp;#160;&amp;#160; An optional feature receiver &lt;strong&gt;assembly&lt;/strong&gt; which is installed to the GAC . If you lose this assembly, and you still define a feature receiver in feature.xml, you will have problems activating and deactivating the feature, as Sharepoint will be looking for a missing assembly in order to fire feature-related events.&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;2.&amp;#160;&amp;#160;&amp;#160;&amp;#160; Page Templates.&lt;/strong&gt;       &lt;br /&gt;A badly formed .aspx page does not get deployed when using a Module element in elements.xml.&amp;#160; In this case, we had a &amp;lt;!-- Comment -&amp;gt; (notice the missing closing tag!) in our page template which caused much confusion.&amp;#160; Initially, our page templates were successfully copied when activating our feature.&amp;#160; Later, however, after we had inserted the comment, the changes were not propagated to the site.&amp;#160; This all happened without any error notifications.&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;Learning:        &lt;br /&gt;&lt;/strong&gt;Check very carefully that your page templates are properly formed when you find that changes are not being propagated whenever a feature with a &amp;lt;Module&amp;gt; element in elements.xml is activated.&amp;#160; &lt;/p&gt;    &lt;p&gt;Always close comments!&amp;#160; &amp;lt;!-- Close me -&amp;gt; (where&amp;#39;s the missing dash?)&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;3.&amp;#160;&amp;#160;&amp;#160;&amp;#160; Sharepoint or SharePoint?        &lt;br /&gt;&lt;/strong&gt;Some of us write Sharepoint, and others write SharePoint.&amp;#160; Sharepoint gives us errors.&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;Learning:        &lt;br /&gt;&lt;/strong&gt;Always refer to SharePoint, and not Sharepoint.&amp;#160; (notice the Captialisation!)&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;4.&amp;#160;&amp;#160;&amp;#160;&amp;#160; Installing to GAC - authentication issue (have to build twice)        &lt;br /&gt;&lt;/strong&gt;When working on the Virtual machine, we sometimes have to build twice in order for our build script to install to the GAC.&amp;#160; &lt;/p&gt;    &lt;p&gt;&lt;strong&gt;Learning:&lt;/strong&gt;&amp;#160; Currently, our only learning is that &amp;quot;you have to build twice&amp;quot; :(&amp;#160; Is Sharepoint locking access to the assembly?&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;5.&amp;#160;&amp;#160;&amp;#160;&amp;#160; Working With Sharepoint Pages - Feedback        &lt;br /&gt;&lt;/strong&gt;Development environment is not complete. It is very frustrating to work with xml files - it is like going back 20 years in code history.&lt;/p&gt;    &lt;p&gt;Debugging is difficult - no errors thrown.&amp;#160; Log files are a mystery,      &lt;br /&gt;      &lt;br /&gt;Sharepoint as a server is good.&amp;#160; We are concerned about the lack of development environment.       &lt;br /&gt;      &lt;br /&gt;Errors are mostly due to syntax - very difficult!       &lt;br /&gt;      &lt;br /&gt;Architecture is nevertheless sound.       &lt;br /&gt;      &lt;br /&gt;We prefer the object model to CAML/XML. &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;6.&amp;#160;&amp;#160;&amp;#160;&amp;#160; Lists&lt;/strong&gt;       &lt;br /&gt;&lt;strong&gt;Use of Object Model        &lt;br /&gt;&lt;/strong&gt;The team prefers using the object model to CAML!&amp;#160; &lt;br /&gt;Team liked the query mechanism.&amp;#160; We need a Query Designer.       &lt;br /&gt;Writing a query designer will be easier because it is all defined in XML.&amp;#160; &lt;br /&gt;XML is great, but we need tools on top of XML.&amp;#160; XML is NOT human readable!       &lt;br /&gt;We spent hours trying to debug XML!       &lt;br /&gt;Sometimes our GUIDs needed curly braces, and other times not.&amp;#160; This is inconsistent.       &lt;br /&gt;No debugging tools.       &lt;br /&gt;A lot of &amp;quot;fiddling&amp;quot; and manual work required to get things working.       &lt;br /&gt;Wizards and snippets are needed because &amp;quot;our fingers hurt!&amp;quot; &lt;/p&gt;    &lt;p&gt;&lt;strong&gt;7.&amp;#160;&amp;#160;&amp;#160;&amp;#160; Sharepoint Workflow        &lt;br /&gt;&lt;/strong&gt;InfoPath is easy to use.       &lt;br /&gt;Saving source files is difficult.       &lt;br /&gt;Creating cs class - need to have in-depth knowledge of WF.       &lt;br /&gt;You have to have in-depth knowledge of WF, not just Sharepoint.&amp;#160; &lt;br /&gt;You have to DESIGN your workflow properly, otherwise you will have problems if you just code it ad hoc.       &lt;br /&gt;      &lt;br /&gt;Nice to have common deployment architecture - features, elements et.       &lt;br /&gt;Forgot to enable browser-compatible features       &lt;br /&gt;Forgot to clear the alternate path property in InfoPath when publishing.&amp;#160; Why did this cause the solution to bomb?       &lt;br /&gt;Code needs to be more intuitive... Need knowledge of WF!       &lt;br /&gt;Visual Studio extensions were very helpful - less bugs on your server!       &lt;br /&gt;Debugging was nitty-gritty (not logical).&amp;#160; &lt;br /&gt;The whole process was &amp;quot;confusing&amp;quot; - nitty gritty, a lot of pieces all over the place.&amp;#160; Compared to WCF, this is difficult.       &lt;br /&gt;Debugging seems to indicate that we need to write a whole lot of Console.Writeline statements... where is the bug?       &lt;/p&gt;&lt;/blockquote&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://dotnet.org.za/jpfouche/archive/2008/02/08/sharepoint-quibbles-developer-readiness-training-adventures.aspx&amp;amp;;subject=Sharepoint+Quibbles+-+Developer+Readiness+Training+Adventures" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/02/08/sharepoint-quibbles-developer-readiness-training-adventures.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://dotnet.org.za/jpfouche/archive/2008/02/08/sharepoint-quibbles-developer-readiness-training-adventures.aspx&amp;amp;;title=Sharepoint+Quibbles+-+Developer+Readiness+Training+Adventures" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/02/08/sharepoint-quibbles-developer-readiness-training-adventures.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://dotnet.org.za/jpfouche/archive/2008/02/08/sharepoint-quibbles-developer-readiness-training-adventures.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/02/08/sharepoint-quibbles-developer-readiness-training-adventures.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://dotnet.org.za/jpfouche/archive/2008/02/08/sharepoint-quibbles-developer-readiness-training-adventures.aspx&amp;amp;title=Sharepoint+Quibbles+-+Developer+Readiness+Training+Adventures" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/02/08/sharepoint-quibbles-developer-readiness-training-adventures.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://dotnet.org.za/jpfouche/archive/2008/02/08/sharepoint-quibbles-developer-readiness-training-adventures.aspx&amp;amp;;title=Sharepoint+Quibbles+-+Developer+Readiness+Training+Adventures" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/02/08/sharepoint-quibbles-developer-readiness-training-adventures.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://dotnet.org.za/jpfouche/archive/2008/02/08/sharepoint-quibbles-developer-readiness-training-adventures.aspx&amp;amp;;title=Sharepoint+Quibbles+-+Developer+Readiness+Training+Adventures&amp;amp;;top=1" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/02/08/sharepoint-quibbles-developer-readiness-training-adventures.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://dotnet.org.za/aggbug.aspx?PostID=316784" width="1" height="1"&gt;</description></item><item><title>Migrating SharePoint 2007 Content with Security Management and Obtaining Document Statistics</title><link>http://dotnet.org.za/jpfouche/archive/2008/01/24/migrating-sharepoint-2007-content-with-security-management-and-obtaining-document-statistics.aspx</link><pubDate>Thu, 24 Jan 2008 04:19:55 GMT</pubDate><guid isPermaLink="false">2d3a9e08-b70c-4031-ba2b-8f5282a2a59a:290876</guid><dc:creator>virasana</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;strong&gt;Content Migration with Security Management     &lt;br /&gt;&lt;/strong&gt;I was recently asked by a colleague if there were any tools available to migrate SharePoint content from one domain to another, whilst maintaining security settings.&amp;#160; A little scouting around led me to a product suite called Doc Ave Content Manager for SharePoint.&amp;#160; We are busy evaluating this product.&amp;#160; Check it out on &lt;a title="http://www.avepoint.com/products/sharepoint-content-management" href="http://www.avepoint.com/products/sharepoint-content-management"&gt;http://www.avepoint.com/products/sharepoint-content-management&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Obtaining Document Statistics     &lt;br /&gt;&lt;/strong&gt;Another issue I researched was how to obtain statistics on documents within SharePoint - number of docs, number of settings etc.&amp;#160; I came up with the following answers:&lt;/p&gt;  &lt;p&gt;1.&amp;#160;&amp;#160; Use SharePoint Designer.&amp;#160; There are a host of reports available from the Site menu.&amp;#160; Check them out below:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://dotnet.org.za/blogs/jpfouche/WindowsLiveWriter/CopyingSharepoint2007_5593/clip_image001_2.jpg"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="280" alt="clip_image001" src="http://dotnet.org.za/blogs/jpfouche/WindowsLiveWriter/CopyingSharepoint2007_5593/clip_image001_thumb.jpg" width="496" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;2.&amp;#160;&amp;#160;&amp;#160;&amp;#160; Check out Doc Ave 4.5 SharePoint Administrator (&lt;a title="http://www.avepoint.com/products/sharepoint-administration/sharepoint-administrator" href="http://www.avepoint.com/products/sharepoint-administration/sharepoint-administrator"&gt;http://www.avepoint.com/products/sharepoint-administration/sharepoint-administrator&lt;/a&gt;)&amp;#160; We are also evaluating this tool.&amp;#160; &lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://dotnet.org.za/jpfouche/archive/2008/01/24/migrating-sharepoint-2007-content-with-security-management-and-obtaining-document-statistics.aspx&amp;amp;;subject=Migrating+SharePoint+2007+Content+with+Security+Management+and+Obtaining+Document+Statistics" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/01/24/migrating-sharepoint-2007-content-with-security-management-and-obtaining-document-statistics.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://dotnet.org.za/jpfouche/archive/2008/01/24/migrating-sharepoint-2007-content-with-security-management-and-obtaining-document-statistics.aspx&amp;amp;;title=Migrating+SharePoint+2007+Content+with+Security+Management+and+Obtaining+Document+Statistics" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/01/24/migrating-sharepoint-2007-content-with-security-management-and-obtaining-document-statistics.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://dotnet.org.za/jpfouche/archive/2008/01/24/migrating-sharepoint-2007-content-with-security-management-and-obtaining-document-statistics.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/01/24/migrating-sharepoint-2007-content-with-security-management-and-obtaining-document-statistics.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://dotnet.org.za/jpfouche/archive/2008/01/24/migrating-sharepoint-2007-content-with-security-management-and-obtaining-document-statistics.aspx&amp;amp;title=Migrating+SharePoint+2007+Content+with+Security+Management+and+Obtaining+Document+Statistics" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/01/24/migrating-sharepoint-2007-content-with-security-management-and-obtaining-document-statistics.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://dotnet.org.za/jpfouche/archive/2008/01/24/migrating-sharepoint-2007-content-with-security-management-and-obtaining-document-statistics.aspx&amp;amp;;title=Migrating+SharePoint+2007+Content+with+Security+Management+and+Obtaining+Document+Statistics" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/01/24/migrating-sharepoint-2007-content-with-security-management-and-obtaining-document-statistics.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://dotnet.org.za/jpfouche/archive/2008/01/24/migrating-sharepoint-2007-content-with-security-management-and-obtaining-document-statistics.aspx&amp;amp;;title=Migrating+SharePoint+2007+Content+with+Security+Management+and+Obtaining+Document+Statistics&amp;amp;;top=1" target="_blank" title = "Post http://dotnet.org.za/jpfouche/archive/2008/01/24/migrating-sharepoint-2007-content-with-security-management-and-obtaining-document-statistics.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://dotnet.org.za/aggbug.aspx?PostID=290876" width="1" height="1"&gt;</description></item><item><title>SharePoint Development Environment Scenarios</title><link>http://dotnet.org.za/jpfouche/archive/2008/01/18/sharepoint-development-environment-scenarios.aspx</link><pubDate>Fri, 18 Jan 2008 21:33:36 GMT</pubDate><guid isPermaLink="false">2d3a9e08-b70c-4031-ba2b-8f5282a2a59a:286051</guid><dc:creator>virasana</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;The following poster details some of the SharePoint development environments I have come across.&amp;#160; Please notice recent ammendments to point 1.&amp;#160; Developing in a multi-developer environment does not work on a single machine!&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;1.&amp;#160;&amp;#160;&amp;#160;&amp;#160; Single Virtual Machine with RDP (SMALL team).        &lt;br /&gt;&lt;/strong&gt;&lt;em&gt;THIS SCENARIO DOES NOT WORK.&amp;#160; The team is happy with this simple setup, until we start debugging.&amp;#160; Attaching to the w3wp.exe IIS worker process causes hairy moments when developer A starts to catch bugs raised by developer B.&amp;#160; This is because they are working on the same worker process.&amp;#160; The worker process is not user specific, but belongs to the application pool identity.&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;a.&amp;#160; &lt;strong&gt;Promise&lt;/strong&gt; to minimise on complexity.&amp;#160;&amp;#160; &lt;br /&gt;b.&amp;#160; &lt;strong&gt;Promise&lt;/strong&gt; of&lt;strong&gt; &lt;/strong&gt;easy integration - your code is already deployed to dev.&amp;#160; No need for an extra &amp;quot;integration&amp;quot; step as you re-deploy from your box to the dev server.       &lt;br /&gt;c.&amp;#160; Expect to experience poor performance.&amp;#160; Our two-person team is nevertheless happy with this.&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;2.&amp;#160;&amp;#160;&amp;#160;&amp;#160; Large Team, Many Workstations (Native Machines without SharePoint)&amp;#160; - Recommended Approach.        &lt;br /&gt;&lt;/strong&gt;You don&amp;#39;t want the hassle of deploying Virtual Machines to each developer&amp;#39;s workstation, or you are concerned with licensing?&amp;#160; If you are developing Web Parts, you can write them in ASP.NET and deploy to SharePoint. &lt;/p&gt;    &lt;p&gt;&lt;strong&gt;3.&amp;#160;&amp;#160;&amp;#160;&amp;#160; Large Team (VM&amp;#39;s with SharePoint)&lt;/strong&gt;&amp;#160; &lt;br /&gt;Each developer in this scenario has a VM with SharePoint installed:       &lt;br /&gt;a.&amp;#160; Everybody has a performant environment.       &lt;br /&gt;b.&amp;#160; Everybody must go through a deployment-to-dev phase in order to integrate code.       &lt;br /&gt;c.&amp;#160;&amp;#160; Licensing implications...&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;This poster will soon be posted to &lt;a href="http://www.drp.co.za"&gt;http://www.drp.co.za&lt;/a&gt; (The Developer Readiness Programme).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://dotnet.org.za/blogs/jpfouche/WindowsLiveWriter/SharepointDeployments_135F0/DevelopmentScenarios_6.jpg"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="603" alt="DevelopmentScenarios