<feed xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US">
    <title>Matthew Cassell</title>
    <link rel="self" type="application/xml" href="http://geekswithblogs.net/mcassell/Atom.aspx" />
    <subtitle type="html">a windows developer writing asp .net web apps</subtitle>
    <id>http://geekswithblogs.net/mcassell/Default.aspx</id>
    <author>
        <name>Matthew Cassell</name>
        <uri>http://geekswithblogs.net/mcassell/Default.aspx</uri>
    </author>
    <generator uri="http://subtextproject.com" version="Subtext Version 0.0.0.0">Subtext</generator>
    <updated>2007-09-02T17:48:57Z</updated>
    <entry>
        <title>Free IIS7 Beta Hosting!</title>
        <link rel="self" type="text/html" href="http://geekswithblogs.net/mcassell/archive/2007/09/02/Free-IIS7-Beta-Hosting.aspx" />
        <id>http://geekswithblogs.net/mcassell/archive/2007/09/02/Free-IIS7-Beta-Hosting.aspx</id>
        <published>2007-09-02T17:48:57-04:00:00</published>
        <updated>2007-09-02T17:48:57Z</updated>
        <content type="html">&lt;p&gt;Check it out! Free IIS7 Beta hosting for you to test your web applications on!
&lt;/p&gt;&lt;p&gt;http://www.iis.net/default.aspx?tabid=7&amp;amp;subtabid=791&lt;/p&gt;&lt;img src="http://geekswithblogs.net/mcassell/aggbug/115116.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://geekswithblogs.net/mcassell/comments/115116.aspx</wfw:comment>
        <slash:comments>1</slash:comments>
        <wfw:commentRss>http://geekswithblogs.net/mcassell/comments/commentRss/115116.aspx</wfw:commentRss>
        <trackback:ping>http://geekswithblogs.net/mcassell/services/trackbacks/115116.aspx</trackback:ping>
    </entry>
    <entry>
        <title>“0 The post could not be added” Error Occurs While Posting To Community Server</title>
        <link rel="self" type="text/html" href="http://geekswithblogs.net/mcassell/archive/2007/08/28/0-The-post-could-not-be-added-Error-Occurs-While.aspx" />
        <id>http://geekswithblogs.net/mcassell/archive/2007/08/28/0-The-post-could-not-be-added-Error-Occurs-While.aspx</id>
        <published>2007-08-28T10:43:10-04:00:00</published>
        <updated>2007-08-28T10:43:10Z</updated>
        <content type="html">&lt;p&gt;I was recently migrating an old blog to community server through the web services API. For some reasons while migrating over the posts, it would die after the 36&lt;sup&gt;th&lt;/sup&gt; item every time while giving a generic "The post could not be added" error. I thought that it could be something to do with that specific post, so I removed it from the list to migrate. Same error. So I began to wonder if it was some spam post count limiter, and there was no blog posting limiter. Needless to say, I was pretty confused. 
&lt;/p&gt;&lt;p&gt;I Google'd around, and eventually found this (&lt;a href="http://communityserver.org/forums/p/491235/595600.aspx#595600"&gt;http://communityserver.org/forums/p/491235/595600.aspx#595600&lt;/a&gt;) talking about Windows Live Writer and a similar error. &lt;strong&gt;The error occurs when there is already a post containing the same title.&lt;/strong&gt; Since both the 37&lt;sup&gt;th&lt;/sup&gt; and the 38&lt;sup&gt;th&lt;/sup&gt; (the two ones it was dying on) contained title's that had already occurred in the migration process it wasn't apparent to me immediately this was this issue.
&lt;/p&gt;&lt;p&gt;Anyhow, just a quick FYI for anyone who hits this issue. &lt;/p&gt;&lt;img src="http://geekswithblogs.net/mcassell/aggbug/115018.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://geekswithblogs.net/mcassell/comments/115018.aspx</wfw:comment>
        <slash:comments>1</slash:comments>
        <wfw:commentRss>http://geekswithblogs.net/mcassell/comments/commentRss/115018.aspx</wfw:commentRss>
        <trackback:ping>http://geekswithblogs.net/mcassell/services/trackbacks/115018.aspx</trackback:ping>
    </entry>
    <entry>
        <title>Accessing Sharepoint Data through Web Services</title>
        <link rel="self" type="text/html" href="http://geekswithblogs.net/mcassell/archive/2007/08/22/Accessing-Sharepoint-Data-through-Web-Services.aspx" />
        <id>http://geekswithblogs.net/mcassell/archive/2007/08/22/Accessing-Sharepoint-Data-through-Web-Services.aspx</id>
        <published>2007-08-22T16:43:08-04:00:00</published>
        <updated>2007-08-22T16:44:32Z</updated>
        <content type="html">&lt;p&gt;I've been developing a web application recently which needed to access a calendar in a sharepoint installation to retrieve events and display them. Under the covers in sharepoint, a calendar with events is more or less just a list. So we access the list. Here's how I did it: &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 1&lt;/strong&gt; &lt;/p&gt;
&lt;p&gt;Add a reference to the lists sharepoint web service in Visual Studio: &lt;/p&gt;
&lt;p&gt;&lt;img height="589" alt="" width="839" src="/images/geekswithblogs_net/mcassell/_addservice.PNG" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 2 &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Next we want to initialize a new instance of the Lists class in the referenced web service, and set the credentials to access the sharepoint site: &lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;sharepoint.lists.&lt;span style="COLOR: #2b91af"&gt;Lists&lt;/span&gt; l = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; sharepoint.lists.&lt;span style="COLOR: #2b91af"&gt;Lists&lt;/span&gt;(); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;span style="COLOR: green"&gt;//Supply the credentials to access sharepoint &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;System.Net.&lt;span style="COLOR: #2b91af"&gt;NetworkCredential&lt;/span&gt; cred = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; System.Net.&lt;span style="COLOR: #2b91af"&gt;NetworkCredential&lt;/span&gt;(&lt;span style="COLOR: #a31515"&gt;"your username here"&lt;/span&gt;, &lt;span style="COLOR: #a31515"&gt;"your password here"&lt;/span&gt;); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;l.Credentials = cred; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 3 &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In order to retrieve the calendar events, we must get a list of items that belong to the calendar's list. We do so using this piece of code: &lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;XmlNode n = l.GetListItems(&lt;span style="COLOR: #a31515"&gt;"your calendar name here"&lt;/span&gt;, &lt;span style="COLOR: blue"&gt;null&lt;/span&gt;, &lt;span style="COLOR: blue"&gt;null&lt;/span&gt;, &lt;span style="COLOR: blue"&gt;null&lt;/span&gt;, &lt;span style="COLOR: blue"&gt;null&lt;/span&gt;, &lt;span style="COLOR: blue"&gt;null&lt;/span&gt;, &lt;span style="COLOR: blue"&gt;null&lt;/span&gt;); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;GetListItems takes a number of parameters, but the only needed one is the name of the calendar, the rest can be null unless you need them. This method returns an XML node with a collection of XML Child Nodes each one representing a list item, and in this case calendar items. An example of the XML it returns through the InnerXml property is this: &lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #990000"&gt;rs:data ItemCount&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="&lt;/span&gt;&lt;strong&gt;2&lt;/strong&gt;&lt;span style="COLOR: blue"&gt;"&lt;/span&gt;&lt;span style="COLOR: red"&gt; xmlns:rs&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="&lt;/span&gt;&lt;span style="COLOR: red"&gt;&lt;strong&gt;urn:schemas-microsoft-com:rowset&lt;/strong&gt;&lt;/span&gt;&lt;span style="COLOR: blue"&gt;"&amp;gt;&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 10pt"&gt;&lt;span style="COLOR: red; FONT-FAMILY: Courier New"&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: Verdana"&gt; &lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #990000"&gt;z:row&lt;/span&gt; &lt;span style="COLOR: #990000"&gt;ows_EventDate&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="&lt;/span&gt;&lt;strong&gt;2007-08-02 20:30:00&lt;/strong&gt;&lt;span style="COLOR: blue"&gt;"&lt;/span&gt;&lt;span style="COLOR: #990000"&gt; ows_EndDate&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="&lt;/span&gt;&lt;strong&gt;2007-08-03 00:30:00&lt;/strong&gt;&lt;span style="COLOR: blue"&gt;"&lt;/span&gt;&lt;span style="COLOR: #990000"&gt; ows_fRecurrence&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="&lt;/span&gt;&lt;strong&gt;0&lt;/strong&gt;&lt;span style="COLOR: blue"&gt;"&lt;/span&gt;&lt;span style="COLOR: #990000"&gt; ows_EventType&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="&lt;/span&gt;&lt;strong&gt;0&lt;/strong&gt;&lt;span style="COLOR: blue"&gt;"&lt;/span&gt;&lt;span style="COLOR: #990000"&gt; ows_Attachments&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="&lt;/span&gt;&lt;strong&gt;0&lt;/strong&gt;&lt;span style="COLOR: blue"&gt;"&lt;/span&gt;&lt;span style="COLOR: #990000"&gt; ows_WorkspaceLink&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="&lt;/span&gt;&lt;strong&gt;0&lt;/strong&gt;&lt;span style="COLOR: blue"&gt;"&lt;/span&gt;&lt;span style="COLOR: #990000"&gt; ows_Title&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="&lt;/span&gt;&lt;strong&gt;Consultants Night&lt;/strong&gt;&lt;span style="COLOR: blue"&gt;"&lt;/span&gt;&lt;span style="COLOR: #990000"&gt; ows_Location&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="&lt;/span&gt;&lt;strong&gt;ObjectSharp Training Room, 1 Yonge St., 19th Floor&lt;/strong&gt;&lt;span style="COLOR: blue"&gt;"&lt;/span&gt;&lt;span style="COLOR: #990000"&gt; ows_Description&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="&lt;/span&gt;&lt;strong&gt;&amp;lt;div&amp;gt;&amp;lt;/div&amp;gt;&lt;/strong&gt;&lt;span style="COLOR: blue"&gt;"&lt;/span&gt;&lt;span style="COLOR: #990000"&gt; ows_fAllDayEvent&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="&lt;/span&gt;&lt;strong&gt;0&lt;/strong&gt;&lt;span style="COLOR: blue"&gt;"&lt;/span&gt;&lt;span style="COLOR: #990000"&gt; ows__ModerationStatus&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="&lt;/span&gt;&lt;strong&gt;0&lt;/strong&gt;&lt;span style="COLOR: blue"&gt;"&lt;/span&gt;&lt;span style="COLOR: #990000"&gt; ows__Level&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="&lt;/span&gt;&lt;strong&gt;1&lt;/strong&gt;&lt;span style="COLOR: blue"&gt;"&lt;/span&gt;&lt;span style="COLOR: #990000"&gt; ows_ID&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="&lt;/span&gt;&lt;strong&gt;1&lt;/strong&gt;&lt;span style="COLOR: blue"&gt;"&lt;/span&gt;&lt;span style="COLOR: #990000"&gt; ows_owshiddenversion&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="&lt;/span&gt;&lt;strong&gt;1&lt;/strong&gt;&lt;span style="COLOR: blue"&gt;"&lt;/span&gt;&lt;span style="COLOR: #990000"&gt; ows_UniqueId&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="&lt;/span&gt;&lt;strong&gt;1;#{3912FED0-05B0-4B80-B452-2CF04C148FEC}&lt;/strong&gt;&lt;span style="COLOR: blue"&gt;"&lt;/span&gt;&lt;span style="COLOR: #990000"&gt; ows_FSObjType&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="&lt;/span&gt;&lt;strong&gt;1;#0&lt;/strong&gt;&lt;span style="COLOR: blue"&gt;"&lt;/span&gt;&lt;span style="COLOR: #990000"&gt; ows_Created&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="&lt;/span&gt;&lt;strong&gt;2007-07-29 21:24:47&lt;/strong&gt;&lt;span style="COLOR: blue"&gt;"&lt;/span&gt;&lt;span style="COLOR: #990000"&gt; ows_FileRef&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="&lt;/span&gt;&lt;strong&gt;1;#Lists/Calendar/1_.000&lt;/strong&gt;&lt;span style="COLOR: blue"&gt;"&lt;/span&gt;&lt;span style="COLOR: #990000"&gt; ows_MetaInfo&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="&lt;/span&gt;&lt;strong&gt;1;#&lt;/strong&gt;&lt;span style="COLOR: blue"&gt;"&lt;/span&gt;&lt;span style="COLOR: red"&gt; xmlns:z&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="&lt;/span&gt;&lt;span style="COLOR: red"&gt;&lt;strong&gt;#RowsetSchema&lt;/strong&gt;&lt;/span&gt;&lt;span style="COLOR: blue"&gt;" /&amp;gt;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 10pt"&gt;&lt;span style="COLOR: red; FONT-FAMILY: Courier New"&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: Verdana"&gt; &lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #990000"&gt;z:row&lt;/span&gt; &lt;span style="COLOR: #990000"&gt;ows_EventDate&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="&lt;/span&gt;&lt;strong&gt;2007-08-22 17:00:00&lt;/strong&gt;&lt;span style="COLOR: blue"&gt;"&lt;/span&gt;&lt;span style="COLOR: #990000"&gt; ows_EndDate&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="&lt;/span&gt;&lt;strong&gt;2007-08-22 17:00:00&lt;/strong&gt;&lt;span style="COLOR: blue"&gt;"&lt;/span&gt;&lt;span style="COLOR: #990000"&gt; ows_fRecurrence&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="&lt;/span&gt;&lt;strong&gt;0&lt;/strong&gt;&lt;span style="COLOR: blue"&gt;"&lt;/span&gt;&lt;span style="COLOR: #990000"&gt; ows_EventType&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="&lt;/span&gt;&lt;strong&gt;0&lt;/strong&gt;&lt;span style="COLOR: blue"&gt;"&lt;/span&gt;&lt;span style="COLOR: #990000"&gt; ows_Attachments&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="&lt;/span&gt;&lt;strong&gt;0&lt;/strong&gt;&lt;span style="COLOR: blue"&gt;"&lt;/span&gt;&lt;span style="COLOR: #990000"&gt; ows_WorkspaceLink&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="&lt;/span&gt;&lt;strong&gt;0&lt;/strong&gt;&lt;span style="COLOR: blue"&gt;"&lt;/span&gt;&lt;span style="COLOR: #990000"&gt; ows_Title&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="&lt;/span&gt;&lt;strong&gt;Test&lt;/strong&gt;&lt;span style="COLOR: blue"&gt;"&lt;/span&gt;&lt;span style="COLOR: #990000"&gt; ows_Description&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="&lt;/span&gt;&lt;strong&gt;&amp;lt;div&amp;gt;&amp;lt;/div&amp;gt;&lt;/strong&gt;&lt;span style="COLOR: blue"&gt;"&lt;/span&gt;&lt;span style="COLOR: #990000"&gt; ows_fAllDayEvent&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="&lt;/span&gt;&lt;strong&gt;0&lt;/strong&gt;&lt;span style="COLOR: blue"&gt;"&lt;/span&gt;&lt;span style="COLOR: #990000"&gt; ows__ModerationStatus&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="&lt;/span&gt;&lt;strong&gt;0&lt;/strong&gt;&lt;span style="COLOR: blue"&gt;"&lt;/span&gt;&lt;span style="COLOR: #990000"&gt; ows__Level&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="&lt;/span&gt;&lt;strong&gt;1&lt;/strong&gt;&lt;span style="COLOR: blue"&gt;"&lt;/span&gt;&lt;span style="COLOR: #990000"&gt; ows_ID&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="&lt;/span&gt;&lt;strong&gt;2&lt;/strong&gt;&lt;span style="COLOR: blue"&gt;"&lt;/span&gt;&lt;span style="COLOR: #990000"&gt; ows_owshiddenversion&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="&lt;/span&gt;&lt;strong&gt;1&lt;/strong&gt;&lt;span style="COLOR: blue"&gt;"&lt;/span&gt;&lt;span style="COLOR: #990000"&gt; ows_UniqueId&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="&lt;/span&gt;&lt;strong&gt;2;#{282B92B3-4B9B-4F78-B3CB-E8B9633793A1}&lt;/strong&gt;&lt;span style="COLOR: blue"&gt;"&lt;/span&gt;&lt;span style="COLOR: #990000"&gt; ows_FSObjType&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="&lt;/span&gt;&lt;strong&gt;2;#0&lt;/strong&gt;&lt;span style="COLOR: blue"&gt;"&lt;/span&gt;&lt;span style="COLOR: #990000"&gt; ows_Created&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="&lt;/span&gt;&lt;strong&gt;2007-08-22 16:29:59&lt;/strong&gt;&lt;span style="COLOR: blue"&gt;"&lt;/span&gt;&lt;span style="COLOR: #990000"&gt; ows_FileRef&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="&lt;/span&gt;&lt;strong&gt;2;#Lists/Calendar/2_.000&lt;/strong&gt;&lt;span style="COLOR: blue"&gt;"&lt;/span&gt;&lt;span style="COLOR: #990000"&gt; ows_MetaInfo&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="&lt;/span&gt;&lt;strong&gt;2;#&lt;/strong&gt;&lt;span style="COLOR: blue"&gt;"&lt;/span&gt;&lt;span style="COLOR: red"&gt; xmlns:z&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="&lt;/span&gt;&lt;span style="COLOR: red"&gt;&lt;strong&gt;#RowsetSchema&lt;/strong&gt;&lt;/span&gt;&lt;span style="COLOR: blue"&gt;" /&amp;gt;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 10pt"&gt;&lt;span style="COLOR: red; FONT-FAMILY: Courier New"&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: Verdana"&gt; &lt;span style="COLOR: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #990000"&gt;rs:data&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 4 &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;We can extract the data of each individual event through iterating through each Xml child node, and outputting the requested values. An example of doing this is this: &lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;span style="COLOR: blue"&gt;for&lt;/span&gt;(&lt;span style="COLOR: blue"&gt;int&lt;/span&gt; i = 0; i &amp;lt; n.ChildNodes[1].ChildNodes.Count;i++) &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;{ &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;span style="COLOR: blue"&gt;if&lt;/span&gt;(n.ChildNodes[1].ChildNodes[i].Attributes!=&lt;span style="COLOR: blue"&gt;null&lt;/span&gt;) &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;span style="COLOR: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="COLOR: #a31515"&gt;"Event "&lt;/span&gt; + n.ChildNodes[1].ChildNodes[i].Attributes[&lt;span style="COLOR: #a31515"&gt;"ows_Title"&lt;/span&gt;].InnerText + &lt;span style="COLOR: #a31515"&gt;" begins on "&lt;/span&gt; + n.ChildNodes[1].ChildNodes[i].Attributes[&lt;span style="COLOR: #a31515"&gt;"ows_EventDate"&lt;/span&gt;].InnerText); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;} &lt;/span&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;This will produce the following output in the console window: &lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;Event Consultants Night begins on 2007-08-02 20:30:00 &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;Event Test begins on 2007-08-22 17:00:00 &lt;/span&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Thus we are done!&lt;/p&gt;&lt;img src="http://geekswithblogs.net/mcassell/aggbug/114899.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://geekswithblogs.net/mcassell/comments/114899.aspx</wfw:comment>
        <slash:comments>3</slash:comments>
        <wfw:commentRss>http://geekswithblogs.net/mcassell/comments/commentRss/114899.aspx</wfw:commentRss>
        <trackback:ping>http://geekswithblogs.net/mcassell/services/trackbacks/114899.aspx</trackback:ping>
    </entry>
    <entry>
        <title>Ensure You Remember EnsureChildControls()!</title>
        <link rel="self" type="text/html" href="http://geekswithblogs.net/mcassell/archive/2007/08/17/Ensure-You-Remember-EnsureChildControls.aspx" />
        <id>http://geekswithblogs.net/mcassell/archive/2007/08/17/Ensure-You-Remember-EnsureChildControls.aspx</id>
        <published>2007-08-17T09:11:17-04:00:00</published>
        <updated>2007-08-17T09:12:01Z</updated>
        <content type="html">&lt;p&gt;I was recently writing a pretty simple ASP .net webpart, and its respective webpart editor. I was however, getting a unexpected error when the webpart editor was opened by the user: &lt;/p&gt;
&lt;p&gt;&lt;img height="374" width="555" alt="" src="/images/geekswithblogs_net/mcassell/7.PNG" /&gt;&lt;/p&gt;
&lt;p&gt;I was initially confused as I wasn't doing anything that would throw this type of exception. The code is pretty straight forward with just setting the value of the textbox, and I had initialized all of the controls in the CreateChildControls() method. The exception was occurring when the SyncChages() method was being called by the editorzone, and the webpart editor was being populated with the current settings. &lt;/p&gt;
&lt;p&gt;Eventually I realized that I had not called EnsureChildControls() before SyncChanges() was being executed. This method is required to initialize your controls. It checks to see if the CreateChildControls method has yet been called, and if it has not, calls it. &lt;/p&gt;
&lt;p&gt;An example of using EnsureChildControls in the SyncChanges method is as follows: &lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;override&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; SyncChanges() &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;{ &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;EnsureChildControls(); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;span style="COLOR: #2b91af"&gt;CustomWebPart&lt;/span&gt; part = (&lt;span style="COLOR: #2b91af"&gt;CustomWebPart&lt;/span&gt;)WebPartToEdit; ; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;span style="COLOR: blue"&gt;if&lt;/span&gt; ((part != &lt;span style="COLOR: blue"&gt;null&lt;/span&gt;)) &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;{ &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;span style="COLOR: green"&gt;//Sync! &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;} &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;}&lt;/span&gt;&lt;/p&gt;&lt;img src="http://geekswithblogs.net/mcassell/aggbug/114739.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://geekswithblogs.net/mcassell/comments/114739.aspx</wfw:comment>
        <slash:comments>1</slash:comments>
        <wfw:commentRss>http://geekswithblogs.net/mcassell/comments/commentRss/114739.aspx</wfw:commentRss>
        <trackback:ping>http://geekswithblogs.net/mcassell/services/trackbacks/114739.aspx</trackback:ping>
    </entry>
    <entry>
        <title>Blog API</title>
        <link rel="self" type="text/html" href="http://geekswithblogs.net/mcassell/archive/2007/08/14/Blog-API.aspx" />
        <id>http://geekswithblogs.net/mcassell/archive/2007/08/14/Blog-API.aspx</id>
        <published>2007-08-14T16:33:40-04:00:00</published>
        <updated>2007-08-14T16:33:40Z</updated>
        <content type="html">&lt;p&gt;So I was trying to configure Word 2007's blogging feature to post to my blog at GeeksWithBlogs, I noticed that it does so through a standard web server API called MetaBlogAPI, and it's pretty widely supported. I had no idea this existed (granted I may be out of the loop). It contains all of the functionality to add posts, view posts, and do everything blog related. Very handy. 
&lt;/p&gt;&lt;p&gt;Check out my blogs API (granted you can't do much without my account credentials!): &lt;a href="http://geekswithblogs.net/mcassell/services/metablogapi.aspx"&gt;http://geekswithblogs.net/mcassell/services/metablogapi.aspx&lt;/a&gt;
	&lt;/p&gt;&lt;img src="http://geekswithblogs.net/mcassell/aggbug/114659.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://geekswithblogs.net/mcassell/comments/114659.aspx</wfw:comment>
        <slash:comments>2</slash:comments>
        <wfw:commentRss>http://geekswithblogs.net/mcassell/comments/commentRss/114659.aspx</wfw:commentRss>
        <trackback:ping>http://geekswithblogs.net/mcassell/services/trackbacks/114659.aspx</trackback:ping>
    </entry>
    <entry>
        <title>Displaying Rich Media using the ASP .net Future’s CTP</title>
        <link rel="self" type="text/html" href="http://geekswithblogs.net/mcassell/archive/2007/08/14/Displaying-Rich-Media-using-the-ASP-.net-Futures-CTP.aspx" />
        <id>http://geekswithblogs.net/mcassell/archive/2007/08/14/Displaying-Rich-Media-using-the-ASP-.net-Futures-CTP.aspx</id>
        <published>2007-08-14T16:22:38-04:00:00</published>
        <updated>2007-08-14T16:37:37Z</updated>
        <content type="html">&lt;p&gt;I've been playing around with the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=A5189BCB-EF81-4C12-9733-E294D13A58E6&amp;amp;displaylang=en"&gt;ASP .net Futures&lt;/a&gt; lately. They are a collection of (as the name implies) up and coming ASP .net technologies that installs ontop of your .net Framework 2.0 install. It's a really interesting package that builds ontop of the ASP .net AJAX framework featuring a wide collection of controls. &lt;/p&gt;
&lt;p&gt;One of the coolest things included with it is the Media control. The Media control is used for leveraging the awesome media playing capabilities of Silverlight in a way which the developer does not have to focus on specific implementations and can focus simply on the end result (a video being played for instance). &lt;/p&gt;
&lt;p&gt;The media control is automatically added to the toolbox when creating an ASP .net Future's project, if not, add the appropriate references, and manually browse for it. &lt;/p&gt;
&lt;p&gt;&lt;img height="249" alt="" width="563" src="/images/geekswithblogs_net/mcassell/1.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 9pt"&gt;&lt;em&gt;The Media control on the toolbox, and on an instance of it in the web page designer. &lt;/em&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Next, one plugs in the location of the media file they wish to play. An example of a Media control that plays an MP3 would be: &lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;asp&lt;/span&gt;&lt;span style="COLOR: blue"&gt;:&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;Media&lt;/span&gt; &lt;span style="COLOR: red"&gt;ID&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="Media1"&lt;/span&gt; &lt;span style="COLOR: red"&gt;runat&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="server"&lt;/span&gt; &lt;span style="COLOR: red"&gt;Height&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="240px"&lt;/span&gt; &lt;span style="COLOR: red"&gt;MediaSkin&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="Professional"&lt;/span&gt; &lt;span style="COLOR: red"&gt;MediaUrl&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="~/U2 - Miracle Drug.mp3" &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;span style="COLOR: red"&gt;Width&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="320px"&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;span style="COLOR: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;asp&lt;/span&gt;&lt;span style="COLOR: blue"&gt;:&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;Media&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;When you run the web application it will look like this and be playing the selected media file: &lt;/p&gt;
&lt;p&gt;&lt;img height="256" alt="" width="341" src="/images/geekswithblogs_net/mcassell/2.png" /&gt;&lt;/p&gt;
&lt;p&gt;Additionally, the Media control exposes a rich variety of properties (which it translates into the proper JavaScript/XAML rendering to the client) to enable the developer to pretty much set any setting imaginable programmatically without having to worry about how it's actually being implemented. One of the neatest things it exposes is the ability to have chapters within the media being played. Primarily a chapter is a time index of a media file. It allows you to have points to which the user can jump around with. For instance the following instance of the control: &lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;asp&lt;/span&gt;&lt;span style="COLOR: blue"&gt;:&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;Media&lt;/span&gt; &lt;span style="COLOR: red"&gt;ID&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="Media1"&lt;/span&gt; &lt;span style="COLOR: red"&gt;runat&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="server"&lt;/span&gt; &lt;span style="COLOR: red"&gt;Height&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="240px"&lt;/span&gt; &lt;span style="COLOR: red"&gt;MediaSkin&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="Professional"&lt;/span&gt; &lt;span style="COLOR: red"&gt;MediaUrl&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="~/U2 - Miracle Drug.mp3" &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;span style="COLOR: red"&gt;Width&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="320px"&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;Chapters&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;asp&lt;/span&gt;&lt;span style="COLOR: blue"&gt;:&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;MediaChapter&lt;/span&gt; &lt;span style="COLOR: red"&gt;ImageUrl&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="~/20.jpg"&lt;/span&gt; &lt;span style="COLOR: red"&gt;TimeIndex&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="20"&lt;/span&gt; &lt;span style="COLOR: red"&gt;Title&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="Twenty"&lt;/span&gt; &lt;span style="COLOR: blue"&gt;/&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;asp&lt;/span&gt;&lt;span style="COLOR: blue"&gt;:&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;MediaChapter&lt;/span&gt; &lt;span style="COLOR: red"&gt;ImageUrl&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="~/30.jpg"&lt;/span&gt; &lt;span style="COLOR: red"&gt;TimeIndex&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="30"&lt;/span&gt; &lt;span style="COLOR: red"&gt;Title&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="Thirty"&lt;/span&gt; &lt;span style="COLOR: blue"&gt;/&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;span style="COLOR: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;Chapters&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;span style="COLOR: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;asp&lt;/span&gt;&lt;span style="COLOR: blue"&gt;:&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;Media&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Will allow the user to jump to different sections as shown below: &lt;/p&gt;
&lt;p&gt;&lt;img height="105" alt="" width="300" src="/images/geekswithblogs_net/mcassell/3.png" /&gt;&lt;/p&gt;
&lt;p&gt;So if we want to do something cool with this, we can have a client event execute when a new chapter occurs like below by setting the OnClientChapterStarted property, we specify a JavaScript function to execute when a new chapter starts: &lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;script&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;span style="COLOR: blue"&gt;function&lt;/span&gt; ChapterStarted(sender, args) &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;{ &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;alert(&lt;span style="COLOR: #a31515"&gt;"A new chapter!"&lt;/span&gt;); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;} &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;span style="COLOR: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;script&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;asp&lt;/span&gt;&lt;span style="COLOR: blue"&gt;:&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;Media&lt;/span&gt; &lt;span style="COLOR: red"&gt;ID&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="Media1"&lt;/span&gt; &lt;span style="COLOR: red"&gt;runat&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="server"&lt;/span&gt; &lt;span style="COLOR: red"&gt;Height&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="240px"&lt;/span&gt; &lt;span style="COLOR: red"&gt;MediaSkin&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="Professional"&lt;/span&gt; &lt;span style="COLOR: red"&gt;MediaUrl&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="~/U2 - Miracle Drug.mp3" &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;span style="COLOR: red"&gt;Width&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="320px"&lt;/span&gt; &lt;span style="COLOR: red"&gt;OnClientChapterStarted&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="ChapterStarted"&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;Chapters&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;asp&lt;/span&gt;&lt;span style="COLOR: blue"&gt;:&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;MediaChapter&lt;/span&gt; &lt;span style="COLOR: red"&gt;ImageUrl&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="~/20.jpg"&lt;/span&gt; &lt;span style="COLOR: red"&gt;TimeIndex&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="20"&lt;/span&gt; &lt;span style="COLOR: red"&gt;Title&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="Twenty"&lt;/span&gt; &lt;span style="COLOR: blue"&gt;/&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;asp&lt;/span&gt;&lt;span style="COLOR: blue"&gt;:&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;MediaChapter&lt;/span&gt; &lt;span style="COLOR: red"&gt;ImageUrl&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="~/30.jpg"&lt;/span&gt; &lt;span style="COLOR: red"&gt;TimeIndex&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="30"&lt;/span&gt; &lt;span style="COLOR: red"&gt;Title&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="Thirty"&lt;/span&gt; &lt;span style="COLOR: blue"&gt;/&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;span style="COLOR: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;Chapters&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;span style="COLOR: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;asp&lt;/span&gt;&lt;span style="COLOR: blue"&gt;:&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;Media&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;While runing it will look like so: &lt;/p&gt;
&lt;p&gt;&lt;img height="323" width="380" alt="" src="/images/geekswithblogs_net/mcassell/4.png" /&gt;&lt;/p&gt;
&lt;p&gt;So the Media control wraps much of the streaming media functionality of Sliverlight into a convenient package that makes programming against extremely easy without making the developer have to worry about the low level intricacies of it. &lt;/p&gt;&lt;img src="http://geekswithblogs.net/mcassell/aggbug/114657.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://geekswithblogs.net/mcassell/comments/114657.aspx</wfw:comment>
        <slash:comments>3</slash:comments>
        <wfw:commentRss>http://geekswithblogs.net/mcassell/comments/commentRss/114657.aspx</wfw:commentRss>
        <trackback:ping>http://geekswithblogs.net/mcassell/services/trackbacks/114657.aspx</trackback:ping>
    </entry>
    <entry>
        <title>Facebook + .net</title>
        <link rel="self" type="text/html" href="http://geekswithblogs.net/mcassell/archive/2007/06/03/Facebook--.net.aspx" />
        <id>http://geekswithblogs.net/mcassell/archive/2007/06/03/Facebook--.net.aspx</id>
        <published>2007-06-03T14:20:12-04:00:00</published>
        <updated>2007-06-03T14:22:59Z</updated>
        <content type="html">&lt;p&gt;&lt;font size="2"&gt;Facebook is probably one of the (if not the) fastest growing social networking site's out there, with millions of users around the world. Microsoft and Facebook recently announced a partnership allowing end user's to program against there API using managed languages. The library is available here : &lt;font face="Arial"&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=CCD46762-45EC-4FBE-AD91-FC916671E734&amp;amp;displaylang=en&amp;amp;amp;clcid=0x409"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=CCD46762-45EC-4FBE-AD91-FC916671E734&amp;amp;displaylang=en&amp;amp;amp;clcid=0x409&lt;/a&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;font size="2"&gt;The API allows a developer to access information about a persons friends, groups, and other info. However while the normal Facebook web UI allows a person to drill through a friends, friends you cannot through the API. This really limits what you can use it for.&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;After installing the component, you simply reference it into your assembly, and create a new instance using the following:&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;Facebook.Components.&lt;font color="#2b91af"&gt;FacebookService&lt;/font&gt; service = &lt;font color="#0000ff"&gt;new&lt;/font&gt; Facebook.Components.&lt;font color="#2b91af"&gt;FacebookService&lt;/font&gt;();&lt;br /&gt;
service.ApplicationKey = &lt;font color="#a31515"&gt;"&amp;lt;removed, get your own from facebook.com"&lt;/font&gt;;&lt;br /&gt;
service.IsDesktopApplication = &lt;font color="#0000ff"&gt;true&lt;/font&gt;;&lt;br /&gt;
service.Secret = &lt;font color="#a31515"&gt;"&amp;lt;removed, get your own from facebook.com&amp;gt;"&lt;/font&gt;;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;The first time you call a function such as .GetFriends() the following window will appear asking the user to login to facebook:&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;&lt;img height="541" alt="" width="707" src="/images/geekswithblogs_net/mcassell/login.JPG" /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;If you want to get a list of the user's friends, and output them, you can use the following:&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt; friends = service.GetFriends());&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;&lt;font color="#0000ff"&gt;foreach&lt;/font&gt; (Facebook.&lt;font color="#2b91af"&gt;User&lt;/font&gt; u &lt;font color="#0000ff"&gt;in&lt;/font&gt; friends)&lt;br /&gt;
     Console.Writeline(u.Name);&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;Just as an example, I have written one actual application using it, a XAML window using &lt;font face="Arial"&gt;infragistics carousel window panel (I would post the source but it uses an infragistics control):&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;img height="576" alt="" width="982" src="/images/geekswithblogs_net/mcassell/main.JPG" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;It’s reasonably cool if you’re really into Facebook, but the limitations in the information the UI can access, coupled with bizarre bugs, and the awkward authentication process make it almost not practical to use. But defiantly worth checking out.&lt;/font&gt;&lt;/p&gt;
&lt;font size="3"&gt;&lt;/font&gt;&lt;img src="http://geekswithblogs.net/mcassell/aggbug/112949.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://geekswithblogs.net/mcassell/comments/112949.aspx</wfw:comment>
        <slash:comments>2</slash:comments>
        <wfw:commentRss>http://geekswithblogs.net/mcassell/comments/commentRss/112949.aspx</wfw:commentRss>
        <trackback:ping>http://geekswithblogs.net/mcassell/services/trackbacks/112949.aspx</trackback:ping>
    </entry>
    <entry>
        <title>Building DotNetNuke Style Portals Using ASP .net 2.0 WebParts</title>
        <link rel="self" type="text/html" href="http://geekswithblogs.net/mcassell/archive/2007/05/13/112462.aspx" />
        <id>http://geekswithblogs.net/mcassell/archive/2007/05/13/112462.aspx</id>
        <published>2007-05-13T20:25:04-04:00:00</published>
        <updated>2007-05-13T20:25:29Z</updated>
        <content type="html">&lt;p class="MsoNormal" style="MARGIN: 0in 0in 10pt"&gt;&lt;font face="Calibri" size="3"&gt;Recently, on a project I was working on, we really wanted to allow users to build rich &amp;amp; dynamic pages. We wanted to be able to build building blocks from which user’s could customize upon. We wanted to be able to have user’s quickly design their own pages without having to worry about HTML. The solution? Webparts.&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 10pt"&gt;&lt;font face="Calibri" size="3"&gt;So off to work I set out, building a series of webparts such as a rich html webpart with a HTML Text Box as its custom designer. A rich content web part allowing the user to display flash, video, or a picture. A user information webpart. So you get the idea, a wide pallet allowing the user to do what they wanted to do. &lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 10pt"&gt;&lt;font face="Calibri" size="3"&gt;Next I built a page to host these wonderful web parts, and allowed the user (if logged in) to add, remove, and customize them. It was beautiful, but not what we needed. What we needed was to allow the user to dynamically create pages. I discovered, that webparts by default are bound to the specific .aspx page they are created with. For instance, there would be no way to separate home.aspx?page=1 from home.aspx?page=2. &lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 10pt"&gt;&lt;font face="Calibri" size="3"&gt;After some investigating, it turns out the easiest solution (that I found) was to inherit the &lt;/font&gt;&lt;span style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes"&gt;System.Web.UI.WebControls.WebParts.SqlPersonalizationProvider &lt;/span&gt;&lt;font face="Calibri" size="3"&gt;and override the LoadPersonalizationBlobs and SavePersonalizationBlob methods to get them to recognize the difference as shown below:&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes"&gt;Public&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes"&gt; &lt;span style="COLOR: blue"&gt;Class&lt;/span&gt; AdvancedSqlPersonalizationProvider&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Inherits&lt;/span&gt; System.Web.UI.WebControls.WebParts.SqlPersonalizationProvider&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Overrides&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Function&lt;/span&gt; LoadPersonalizationState(&lt;span style="COLOR: blue"&gt;ByVal&lt;/span&gt; webPartManager &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; System.Web.UI.WebControls.WebParts.WebPartManager, &lt;span style="COLOR: blue"&gt;ByVal&lt;/span&gt; ignoreCurrentUser &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Boolean&lt;/span&gt;) &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; System.Web.UI.WebControls.WebParts.PersonalizationState&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Return&lt;/span&gt; &lt;span style="COLOR: blue"&gt;MyBase&lt;/span&gt;.LoadPersonalizationState(webPartManager, ignoreCurrentUser)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Function&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Protected&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Overloads&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Overrides&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Sub&lt;/span&gt; LoadPersonalizationBlobs(&lt;span style="COLOR: blue"&gt;ByVal&lt;/span&gt; webPartManager &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; WebPartManager, &lt;span style="COLOR: blue"&gt;ByVal&lt;/span&gt; path &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; &lt;span style="COLOR: blue"&gt;String&lt;/span&gt;, &lt;span style="COLOR: blue"&gt;ByVal&lt;/span&gt; userName &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; &lt;span style="COLOR: blue"&gt;String&lt;/span&gt;, &lt;span style="COLOR: blue"&gt;ByRef&lt;/span&gt; sharedDataBlob &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Byte&lt;/span&gt;(), &lt;span style="COLOR: blue"&gt;ByRef&lt;/span&gt; userDataBlob &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Byte&lt;/span&gt;())&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="COLOR: blue"&gt;If&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Not&lt;/span&gt; (System.Web.HttpContext.Current.Request(&lt;span style="COLOR: #a31515"&gt;"page"&lt;/span&gt;) &lt;span style="COLOR: blue"&gt;Is&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Nothing&lt;/span&gt;) &lt;span style="COLOR: blue"&gt;Then&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;                &lt;/span&gt;&lt;span style="COLOR: blue"&gt;MyBase&lt;/span&gt;.LoadPersonalizationBlobs(webPartManager, System.Web.HttpContext.Current.Request(&lt;span style="COLOR: #a31515"&gt;"page"&lt;/span&gt;), userName, sharedDataBlob, userDataBlob)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Else&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;                &lt;/span&gt;&lt;span style="COLOR: blue"&gt;MyBase&lt;/span&gt;.LoadPersonalizationBlobs(webPartManager, path, userName, sharedDataBlob, userDataBlob)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;span style="COLOR: blue"&gt;If&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Sub&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Protected&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Overloads&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Overrides&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Sub&lt;/span&gt; SavePersonalizationBlob(&lt;span style="COLOR: blue"&gt;ByVal&lt;/span&gt; webPartManager &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; WebPartManager, &lt;span style="COLOR: blue"&gt;ByVal&lt;/span&gt; path &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; &lt;span style="COLOR: blue"&gt;String&lt;/span&gt;, &lt;span style="COLOR: blue"&gt;ByVal&lt;/span&gt; userName &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; &lt;span style="COLOR: blue"&gt;String&lt;/span&gt;, &lt;span style="COLOR: blue"&gt;ByVal&lt;/span&gt; dataBlob &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Byte&lt;/span&gt;())&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="COLOR: blue"&gt;If&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Not&lt;/span&gt; (System.Web.HttpContext.Current.Request(&lt;span style="COLOR: #a31515"&gt;"page"&lt;/span&gt;) &lt;span style="COLOR: blue"&gt;Is&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Nothing&lt;/span&gt;) &lt;span style="COLOR: blue"&gt;Then&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;                &lt;/span&gt;&lt;span style="COLOR: blue"&gt;MyBase&lt;/span&gt;.SavePersonalizationBlob(webPartManager, System.Web.HttpContext.Current.Request(&lt;span style="COLOR: #a31515"&gt;"page"&lt;/span&gt;), userName, dataBlob)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Else&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;                &lt;/span&gt;&lt;span style="COLOR: blue"&gt;MyBase&lt;/span&gt;.SavePersonalizationBlob(webPartManager, path, userName, dataBlob)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;span style="COLOR: blue"&gt;If&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Sub&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 10pt"&gt;&lt;span style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Class&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 10pt"&gt;&lt;font face="Calibri" size="3"&gt;We then use this as the data provider for the webparts. What this does is it provides a mechanism to seamlessly create dynamic pages, and have it all handed by the existing and stable webparts engine. &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;This, coupled with properly done URL Re-Writing means you can virtually eliminate the need for multiple .aspx pages on your site.&lt;/font&gt;&lt;/p&gt;&lt;img src="http://geekswithblogs.net/mcassell/aggbug/112462.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://geekswithblogs.net/mcassell/comments/112462.aspx</wfw:comment>
        <slash:comments>1</slash:comments>
        <wfw:commentRss>http://geekswithblogs.net/mcassell/comments/commentRss/112462.aspx</wfw:commentRss>
        <trackback:ping>http://geekswithblogs.net/mcassell/services/trackbacks/112462.aspx</trackback:ping>
    </entry>
    <entry>
        <title>So I'm Matt Cassell!</title>
        <link rel="self" type="text/html" href="http://geekswithblogs.net/mcassell/archive/2007/05/13/112460.aspx" />
        <id>http://geekswithblogs.net/mcassell/archive/2007/05/13/112460.aspx</id>
        <published>2007-05-13T15:36:04-04:00:00</published>
        <updated>2007-05-13T20:05:56Z</updated>
        <content type="html">&lt;p class="MsoNormal" style="MARGIN: 0in 0in 10pt"&gt;&lt;font face="Calibri" size="3"&gt;So hi everyone!&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;This is my first blog posting here, and I thought I’d introduce myself. I’m a high school student from Cambridge, Ontario, Canada (near Toronto). I’m also a Microsoft Visual C# MVP, and I currently work part-time for ObjectSharp Consulting in Toronto mainly focusing on their website.&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 10pt"&gt;&lt;font face="Calibri" size="3"&gt;Through this blog, I hope to share some of the solutions, and problems I face in my development experience. &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;I know blog’s have saved my but a few times, and it’d be nice to return the favour.&lt;/font&gt;&lt;/p&gt;&lt;img src="http://geekswithblogs.net/mcassell/aggbug/112460.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://geekswithblogs.net/mcassell/comments/112460.aspx</wfw:comment>
        <slash:comments>2</slash:comments>
        <wfw:commentRss>http://geekswithblogs.net/mcassell/comments/commentRss/112460.aspx</wfw:commentRss>
        <trackback:ping>http://geekswithblogs.net/mcassell/services/trackbacks/112460.aspx</trackback:ping>
    </entry>
</feed>