<?xml version='1.0' encoding='UTF-8'?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/'><id>tag:blogger.com,1999:blog-3648996716590898807</id><updated>2009-01-05T20:22:19.996-05:00</updated><title type='text'>A Rolling Stone Gathers No MOSS</title><subtitle type='html'>Posts about Microsoft Office Sharepoint Server 2007, Windows Sharepoint Services 3.0, InfoPath, Excel Services, Performance Point Server 2007, ASP.Net 2.0, Microsoft  Certifications and anything else I can think of.</subtitle><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/posts/default'/><link rel='alternate' type='text/html' href='http://www.michaelmarkel.com/blog.html'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/posts/default?start-index=26&amp;max-results=25'/><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.michaelmarkel.com/atom.xml'/><author><name>Michael Markel</name><uri>http://www.blogger.com/profile/00553854223777092923</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>103</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3648996716590898807.post-6593231660997043699</id><published>2009-01-05T20:22:00.000-05:00</published><updated>2009-01-05T20:22:20.021-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Login as someone else in batch file'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint batch file login'/><title type='text'>Using a batch file to Open SharePoint site in browser</title><content type='html'>&lt;div&gt;Today I was tasked with making it easier for employees to get to our Intranet site. There are a couple of public computers in the break room that employees can use to browse the net on their breaks. &lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;These computers are not really computers in any sense. They are more like dumb terminals. They can store a certain amount of data in non-volatile storage so this limits much of what I can do. &lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;The task was to provide an icon on the desktop that the employees could click on and it would open up the Intranet site in the browser and make sure they are automatically logged in. The logging in would not be so hard in a normal corprate network situation as the user that is logged into Windows would have their credentials passed into SharePoint. This was not the case as these computers are not attached to the domain and not on the corporate network.&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;I figured the best way to accomplish this task was to create a batch file. I knew it was pretty easy to open a program in a batch file so I began with:&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;start iexplore.exe &lt;a href="http://intranet/"&gt;http://intranet&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;This would open up the Intranet site in Internet Explorer. Now I just need to pass in the user credentials so the user is not prompted for a login and password.&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;I began searching on the web and found some posts that suggested using /user:domain\username password so that it looks like this:&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;start iexplore.exe &lt;a href="http://intranet/"&gt;http://intranet&lt;/a&gt; /user:domain\username password&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;This did not change the user at all and it still caused the prompts. I then found a post by &lt;a href="http://ddkonline.blogspot.com/2008/06/using-impersonation-batch-files-and.html"&gt;David Klein&lt;/a&gt; on using impersonation batch files for testing web applications. He had very similar conditions - Integrated Windows Authentication and an Intranet site that he wanted to open as a different user. His suggestion is short, simple, and works like a charm:&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;runas /user:domain\username /savecred "%ProgramFiles%/Internet Explorer/iexplore.exe http://intranet"&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;This will cause the machine to prompt for the password the first time it is ran but after that it stores it (until the computer is rebooted). This is also fairly secure even if it is a batch file that anyone can view in Notepad since the command does not contain any passwords. &lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;The only downside to this is that if the computers are rebooted or the power goes out, you will need to re-enter the password the first time.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/6593231660997043699/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3648996716590898807&amp;postID=6593231660997043699' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/posts/default/6593231660997043699'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/posts/default/6593231660997043699'/><link rel='alternate' type='text/html' href='http://www.michaelmarkel.com/2009/01/using-batch-file-to-open-sharepoint.html' title='Using a batch file to Open SharePoint site in browser'/><author><name>Michael Markel</name><uri>http://www.blogger.com/profile/00553854223777092923</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3648996716590898807.post-6923930758986634373</id><published>2009-01-01T18:15:00.000-05:00</published><updated>2009-01-01T18:15:45.888-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Databases'/><title type='text'>SharePoint Databases</title><content type='html'>&lt;div&gt;If you ever wondered about the structure of the SharePoint databases and what all of the fields mean and where you should look in the databases for the information you need, you will want to check out the &lt;a href="http://msdn.microsoft.com/en-us/library/aa185404.aspx"&gt;MSDN articles&lt;/a&gt;. (I don't recommend changing anything inside the SharePoint databases, you can really mess up an installation that way). There are articles that explain the tables for the configuration and content DBs as well as the stored procedures. &lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/6923930758986634373/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3648996716590898807&amp;postID=6923930758986634373' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/posts/default/6923930758986634373'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/posts/default/6923930758986634373'/><link rel='alternate' type='text/html' href='http://www.michaelmarkel.com/2009/01/sharepoint-databases.html' title='SharePoint Databases'/><author><name>Michael Markel</name><uri>http://www.blogger.com/profile/00553854223777092923</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3648996716590898807.post-8360120983857850085</id><published>2008-12-28T13:36:00.000-05:00</published><updated>2008-12-28T13:36:31.213-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Administration Toolkit 2.0'/><title type='text'>SharePoint Administration ToolKit 2.0</title><content type='html'>&lt;div&gt;The SharePoint Administration Toolkit 2.0 is available and provides some resources for administrators that want to run high-availability or geographically dispersed installations of SharePoint. More information can be found on the &lt;a href="http://blogs.msdn.com/sharepoint/archive/2008/08/28/sharepoint-administration-toolkit-2-0-is-now-available.aspx"&gt;Microsoft SharePoint Team Blog&lt;/a&gt;.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/8360120983857850085/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3648996716590898807&amp;postID=8360120983857850085' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/posts/default/8360120983857850085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/posts/default/8360120983857850085'/><link rel='alternate' type='text/html' href='http://www.michaelmarkel.com/2008/12/sharepoint-administration-toolkit-20.html' title='SharePoint Administration ToolKit 2.0'/><author><name>Michael Markel</name><uri>http://www.blogger.com/profile/00553854223777092923</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3648996716590898807.post-1077801922862559562</id><published>2008-12-17T13:04:00.000-05:00</published><updated>2008-12-17T13:04:14.276-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Best Practice Resource Center for SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint best practices'/><title type='text'>SharePoint Best Practices</title><content type='html'>I was pleasantly surprised to see today that Microsoft has created a central location for best practices for SharePoint development and administration. With a product as complicated as SharePoint it is hard to find exactly what is the best way to accomplish something. The &lt;a href="http://technet.microsoft.com/en-us/office/sharepointserver/bb736746.aspx"&gt;Best Practices Resource Center for SharePoint Server 2007&lt;/a&gt; is an excellent resource to get the information you need. It groups items into categories for Publishing Portals, Team Collaboration Sites, Search, My Sites, Developing Custom Applications, and more. Many of the things I have learned the hard way over the past year and a half are included in these resources.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If you are looking for tips on efficiency to writing custom code for SharePoint check out the Resource Center.</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/1077801922862559562/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3648996716590898807&amp;postID=1077801922862559562' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/posts/default/1077801922862559562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/posts/default/1077801922862559562'/><link rel='alternate' type='text/html' href='http://www.michaelmarkel.com/2008/12/sharepoint-best-practices.html' title='SharePoint Best Practices'/><author><name>Michael Markel</name><uri>http://www.blogger.com/profile/00553854223777092923</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3648996716590898807.post-6007384398326638367</id><published>2008-12-12T12:42:00.000-05:00</published><updated>2008-12-12T12:42:23.002-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Workflows for Microsoft Office Live'/><title type='text'>Workflows for Office Live</title><content type='html'>SharePoint Designer is not just for SharePoint! You can create workflows for Microsoft Office Live right inside of SharePoint Designer. All you have to do is use the open site menu option and pass it in your Office Live URL. The post from &lt;a href="http://blogs.msdn.com/sharepointdesigner/archive/2008/08/29/creating-workflows-in-microsoft-office-live.aspx"&gt;Rohit Puri &lt;/a&gt;goes into more detail.</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/6007384398326638367/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3648996716590898807&amp;postID=6007384398326638367' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/posts/default/6007384398326638367'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/posts/default/6007384398326638367'/><link rel='alternate' type='text/html' href='http://www.michaelmarkel.com/2008/12/workflows-for-office-live.html' title='Workflows for Office Live'/><author><name>Michael Markel</name><uri>http://www.blogger.com/profile/00553854223777092923</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3648996716590898807.post-5342756204151850247</id><published>2008-12-02T18:43:00.000-05:00</published><updated>2008-12-02T18:43:34.406-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DHTML menus'/><category scheme='http://www.blogger.com/atom/ns#' term='Flash not showing up in Mac Firefox'/><category scheme='http://www.blogger.com/atom/ns#' term='DHTML menus and Flash'/><category scheme='http://www.blogger.com/atom/ns#' term='browser incompatabilities'/><title type='text'>Browser Compatability Part 2</title><content type='html'>Today I spent most of my day trying to figure out the intricacies in browser compatabilty (especially when it comes to adding Flash into the mix). For the longest time I have known that to add Flash to a page and try to have DHTML menus hover out on top of the Flash movie that you needed to set the Flash movie wmode to either opaque or transparent. This allows the menus to appear on top of the Flash movie in the DOM.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The issues I was running into today was a user that could not get the menus to work while using Firefox 2.0.0.16 while in Ubuntu Linux. This is definitely a small section of our users but I figured I would at least look into the issue and see what was happening. The first thing I noticed was that the menus were flying out below the Flash movie. I thought this weird since I had coded the HTML to allow for them to fly out above. I did some searching and found that Linux does not support the transparent or opaque modes for Flash movies. There is suppose to be support coming with Firefox 3 and Flash 10 that will finally allow for the same compatability for Linux users.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Second issue was users on Firefox on the Mac could not see the Flash movie load at all. The interesting thing with this one was that I needed to set the wmode to window in order for the movie to show up at all. Of course this caused some funky behavior with the menus and I did not want it to do that for Firefox on Windows so I hade to use a Javascript hack to determine the OS version through the navigator.appVersion property and parsing out Mac and setting the object and embed code for that to use the window wmode and for windows users to use the regular transparent wmode.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;What gets me about this is how incompatible things really are between OS's and Browsers. The same browser version will act totally different on a different OS and different browsers on the same OS will render things completely different. For having standards for many years now, you would think that things would be a little more, well standard. Some of this promises to be improved through IE8 and Firefox 3 as well as Safari 3. Firefox 3 will bring Linux into line with the standards and seems to improve having to code around Firefox on the Mac.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;As a side note, I also noticed that there can be issues with Firefox on an Intel Mac. Just something else to be aware of when trying to design your site to reach the maximum amount of people.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The easiest way for now to prevent most of these incompatabilities is to not mix DHTML meuns and Flash or Text fields with flash or DHTML menus. Those are the two areas that cause the most problems.</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/5342756204151850247/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3648996716590898807&amp;postID=5342756204151850247' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/posts/default/5342756204151850247'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/posts/default/5342756204151850247'/><link rel='alternate' type='text/html' href='http://www.michaelmarkel.com/2008/12/browser-compatability-part-2.html' title='Browser Compatability Part 2'/><author><name>Michael Markel</name><uri>http://www.blogger.com/profile/00553854223777092923</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3648996716590898807.post-5944834568266108347</id><published>2008-11-21T11:37:00.000-05:00</published><updated>2008-11-21T11:37:42.358-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NTLM SharePoint Authentication'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint authentication'/><title type='text'>Authentication in SharePoint</title><content type='html'>&lt;div&gt;One of the great things about an intranet site is allowing everyone in the company to access the data they need in one place. It is even better yet if they can remember one password to get to that information. If you are using NTLM authentication you can get this type of integration because users log into SharePoint with the same Active Directory accounts that they are logging into their systems and very likely, their email as well. This works even better if you set up a Global Policy to add the SharePoint site to the trusted Intranet locations in IE. The credientials of the users machine logon will automatically be passed onto SharePoint. (If you don't create a global policy, each user will need to add the SharePoint site to their Intranet sites individually and if you are trying to get people on board with SharePoint, you won't want them to have to do that.)&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;One of the interesting things that I have yet to find a solution for, is that when a user needs to log in (in the case that you want added security, see future blog post for more details on this), the domain does not automatically populate. If you try to just type in the login name and password, SharePoint will keep prompting and then after the 3rd time you will get Access Deined. This can become a sticking point for SharePoint because most users may not even know the domain that they are logging into. It would be nice if there was some way to prepopulate the domain part of the login and allow the users to only enter their username and password and the domain would be appended to the login automatically. I have yet to find a way to do this and am in the process of doing some more research on the topic. If anyone has any ideas on the topic, let me know. &lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/5944834568266108347/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3648996716590898807&amp;postID=5944834568266108347' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/posts/default/5944834568266108347'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/posts/default/5944834568266108347'/><link rel='alternate' type='text/html' href='http://www.michaelmarkel.com/2008/11/authentication-in-sharepoint.html' title='Authentication in SharePoint'/><author><name>Michael Markel</name><uri>http://www.blogger.com/profile/00553854223777092923</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3648996716590898807.post-8619179250753071742</id><published>2008-11-11T20:49:00.000-05:00</published><updated>2008-11-11T20:49:02.066-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='File is corrupt and can&apos;t be repaired in Adobe Reader'/><category scheme='http://www.blogger.com/atom/ns#' term='Adobe error when forcing PDF download'/><title type='text'>Forcing a PDF to download in browser and Adobe error</title><content type='html'>&lt;div&gt;A while back I had a request to offer two options to access a PDF file from a SharePoint site. One was to allow the PDF to open in the browser like normal and the second was to force the download prompt to the user. The second one was a little more tricky and I finally found a way to send the file in the Reponse in code and send it as an attachment and thus prompt the user to download the file. The code for that looks like this:&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt; 'Create an array that contains the contents of the file.   &lt;/div&gt;&lt;br /&gt;&lt;div&gt;Dim mystream As Byte() = file.OpenBinary     &lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt; 'Clear the Response headers and set the response to be an attachment   &lt;/div&gt;&lt;br /&gt;&lt;div&gt;Response.ClearHeaders()   &lt;/div&gt;&lt;br /&gt;&lt;div&gt;Response.ContentType = "APPLICATION/PDF"   &lt;/div&gt;&lt;br /&gt;&lt;div&gt;Response.Clear()   &lt;/div&gt;&lt;br /&gt;&lt;div&gt;Response.AddHeader("Content-Disposition", "attachment; filename=" &amp;amp; file.Name)   Response.BinaryWrite(mystream)&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;This seemed to do the trick until the other day when I had a client call and say that when they used the download mechanism to open the file and save it to their desktop they were getting an error in Adobe Reader 7. I tested it out and found the same issue when I downloaded the file. The error said that the file was corrupted and that reader could not repair it. I could open the file just fine using Adobe Reader 8. &lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;The solution to this issue turns out to be that I missed a line of code in the above block that must leave the PDF file unwritten and Adobe Reader 8 can repair the file but 7 can't. I found a &lt;a href="http://blogs.msdn.com/rahulso/archive/2006/03/24/4-ways-to-send-a-pdf-file-to-the-ie-client-in-asp-net-2-0.aspx"&gt;post by Rahul &lt;/a&gt; that described 4 different ways to download a PDF file. In one of the ways was the way I had used to force the download. I noticed a line that said Response. End(). &lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;I added this line to my code and suddenly the PDF files were no longer corrupt and could be opened in Adobe 7 as well as 8. &lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;The final code ended up looking like this:&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt; 'Create an array that contains the contents of the file.   &lt;/div&gt;&lt;br /&gt;&lt;div&gt;Dim mystream As Byte() = file.OpenBinary     &lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt; 'Clear the Response headers and set the response to be an attachment   &lt;/div&gt;&lt;br /&gt;&lt;div&gt;Response.ClearHeaders()   &lt;/div&gt;&lt;br /&gt;&lt;div&gt;Response.ContentType = "APPLICATION/PDF"   &lt;/div&gt;&lt;br /&gt;&lt;div&gt;Response.Clear()   &lt;/div&gt;&lt;br /&gt;&lt;div&gt;Response.AddHeader("Content-Disposition", "attachment; filename=" &amp;amp; file.Name)   Response.BinaryWrite(mystream)   &lt;/div&gt;&lt;br /&gt;&lt;div&gt;Response.End()&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;The nice thing about the above code is that the file.OpenBinary method is an SPFile method that opens a file from SharePoint as a byte array. It works really well for items like this. &lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/8619179250753071742/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3648996716590898807&amp;postID=8619179250753071742' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/posts/default/8619179250753071742'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/posts/default/8619179250753071742'/><link rel='alternate' type='text/html' href='http://www.michaelmarkel.com/2008/11/forcing-pdf-to-download-in-browser-and.html' title='Forcing a PDF to download in browser and Adobe error'/><author><name>Michael Markel</name><uri>http://www.blogger.com/profile/00553854223777092923</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3648996716590898807.post-7965139671606540201</id><published>2008-11-04T19:16:00.000-05:00</published><updated>2008-11-04T19:16:36.639-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sporadic backup file sizes'/><category scheme='http://www.blogger.com/atom/ns#' term='stsadm export runs out of space'/><title type='text'>When STSADM Export runs out of space</title><content type='html'>&lt;div&gt;A little while back I had a client that called about a script we had created to automate SharePoint site backups. The script was written in PowerShell and basically went through the entire site and exported each site to a directory and then moved onto each subsite of that site. Once all of the sites were exported, it zipped all the files up and created one ZIP file. &lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;The client was calling because the backups seemed to be sporadic in size. One dat the backup file would be 14GB and then the next it would be 35GB and then it would be 8GB. I knew that the script was not doing anything special so I looked into the client's server and found that there was only about 100MB of free space on their hard drive. It then made sense to me that the size of the files was so sporadic. What was happening is that there would be enough space on the drive to complete the first day's backup. Since the script was keeping 7 days of files, when it got to the next day it could complete that backup. But by the 6th or 7th day there was not enough space on the drive so it would back up what it could until it ran out of space and then fail. The next day the script would run and delete one of the large backup files and there would once again be enough space to backup completely. This would continue on. &lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;I told the client that they would need more disk space as they were running out and that is why the files were different sizes. I just heard back from the client the other day and they said that the files were now the same size. &lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;The reason I knew that the script was bombing out and just finishing was that I tried manually doing an export of a fairly large site and the export failed when disk space ran out but still created a file that just didn't include the entire site. Once you know that you would see why there were no errors anyplace to indicate a problem.&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/7965139671606540201/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3648996716590898807&amp;postID=7965139671606540201' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/posts/default/7965139671606540201'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/posts/default/7965139671606540201'/><link rel='alternate' type='text/html' href='http://www.michaelmarkel.com/2008/11/when-stsadm-export-runs-out-of-space.html' title='When STSADM Export runs out of space'/><author><name>Michael Markel</name><uri>http://www.blogger.com/profile/00553854223777092923</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3648996716590898807.post-4534203678072406311</id><published>2008-10-27T20:09:00.000-04:00</published><updated>2008-10-27T20:09:54.590-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSS 3.0'/><category scheme='http://www.blogger.com/atom/ns#' term='Application Pages'/><category scheme='http://www.blogger.com/atom/ns#' term='MOSS 2007'/><title type='text'>Application Pages in SharePoint</title><content type='html'>&lt;div&gt;Application pages allow you to create custom screens in SharePoint and make them available at any site level, similar to the accessdenied.aspx and error.aspx that come out of the box with SharePoint. To create an application page, &lt;a href="http://msdn.microsoft.com/en-us/library/bb418732.aspx"&gt;follow the article by Ted Pattison&lt;/a&gt; to get the minimal code that is needed in an application page. &lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;Once you have the page built you place it in the 12 hive in the Layouts folder. To access your cuastom page you then navigate to a site (i.e. http://sharepointserver/site/_layouts/nameofcustompage.aspx. This will display your custom page. You can access it at any level of your site. &lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;Application pages provide an excellent way to add custom code to your site and can be debugged by attaching to the W3WP process on the SharePoint server that matches the AppId of the site you want. &lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/4534203678072406311/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3648996716590898807&amp;postID=4534203678072406311' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/posts/default/4534203678072406311'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/posts/default/4534203678072406311'/><link rel='alternate' type='text/html' href='http://www.michaelmarkel.com/2008/10/application-pages-in-sharepoint.html' title='Application Pages in SharePoint'/><author><name>Michael Markel</name><uri>http://www.blogger.com/profile/00553854223777092923</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3648996716590898807.post-439480382512477373</id><published>2008-10-21T17:54:00.000-04:00</published><updated>2008-10-21T17:55:58.335-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Search Server 2008 content'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Search content'/><category scheme='http://www.blogger.com/atom/ns#' term='Network Path was not found'/><title type='text'>The Network Path was not found. in SharePoint Search</title><content type='html'>&lt;div&gt;Today I was working with Search Server Express 2008 to index a folder share on our network. I set up the share and pointed it to the correct path. I then set the content source to run a full crawl and monitored the results of the crawl. After 7 seconds it had finished the crawl and I knew that that was a little too soon considering there were a few items in that folder. So I took a look at the crawl logs and saw that there was an error that said 'The Network Path was not found.' So I clicked on the link that is above the error and was able to open the path just fine. &lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;I then thought about the account that the crawl was running as and the account that I am using when clicking on the link. So I tried indexing a folder share that the content crawling account did have access to and it was able to index the content without any problems. &lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;Something to keep in mind when using the SharePoint search or Search Server 2008: make sure that your content crawl access account has access to the content you want to crawl because the error log will not report a useful error. If you try to look into the SharePoint 12 hive logs you will not see any errors in there. So if you run across 'The Network Path was not found' error check the permissions on the share to make sure your index account has access to it. &lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/439480382512477373/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3648996716590898807&amp;postID=439480382512477373' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/posts/default/439480382512477373'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/posts/default/439480382512477373'/><link rel='alternate' type='text/html' href='http://www.michaelmarkel.com/2008/10/network-path-was-not-found-in.html' title='The Network Path was not found. in SharePoint Search'/><author><name>Michael Markel</name><uri>http://www.blogger.com/profile/00553854223777092923</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3648996716590898807.post-7481368487377103701</id><published>2008-10-16T19:58:00.000-04:00</published><updated>2008-10-16T20:00:28.799-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSS 3.0'/><category scheme='http://www.blogger.com/atom/ns#' term='MOSS 2007'/><category scheme='http://www.blogger.com/atom/ns#' term='Minimal Master Page'/><title type='text'>Minimal Master Page</title><content type='html'>&lt;div&gt;One of the things I frequently find myself doing is creating a master page for some custom layout. There are many controls that need to be on a master page or errors will be thrown by SharePoint. To make sure you have all the controls the first time, &lt;a href="http://msdn.microsoft.com/en-us/library/aa660698.aspx"&gt;Microsoft created an article &lt;/a&gt;with the code needed to create a minimal master page. &lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;I use this article all the time and thought other people would like to have a place to go instead of trying to figure out what controls are needed. &lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/7481368487377103701/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3648996716590898807&amp;postID=7481368487377103701' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/posts/default/7481368487377103701'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/posts/default/7481368487377103701'/><link rel='alternate' type='text/html' href='http://www.michaelmarkel.com/2008/10/minimal-master-page.html' title='Minimal Master Page'/><author><name>Michael Markel</name><uri>http://www.blogger.com/profile/00553854223777092923</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3648996716590898807.post-280629747347905082</id><published>2008-10-15T18:51:00.000-04:00</published><updated>2008-10-15T18:53:59.978-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='User Information List'/><title type='text'>User Information List</title><content type='html'>&lt;div&gt;&lt;/div&gt;The other day I was trying to create a list event receiver that would fire when a user was added to SharePoint. I did some research and found the User Information List, which is the list that contains all the users in SharePoint. You access this list when you click on the People and Groups link. I built the event receiver and attached it to the list and added some users, only to find out that the event was not firing.&lt;br /&gt;&lt;br /&gt;I did some debugging and the code was working fine, so I decided to attach the event receiver to another custom list and added some items to that. The event receiver fired perfectly. I used the U2U CAML Query Builder to run some queries against the User Information List and was able to get back the type of data I wanted in my event receiver.&lt;br /&gt;&lt;br /&gt;I tried to do some more research and could not find anyone else out there that was trying to do the same thing as me and so I came to the conclusion that there is some special setting on the User Information List that does not allow the events to fire. I will keep this on the list of items to watch out for and if anyone has any ideas feel free to let me know.</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/280629747347905082/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3648996716590898807&amp;postID=280629747347905082' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/posts/default/280629747347905082'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/posts/default/280629747347905082'/><link rel='alternate' type='text/html' href='http://www.michaelmarkel.com/2008/10/user-information-list.html' title='User Information List'/><author><name>Michael Markel</name><uri>http://www.blogger.com/profile/00553854223777092923</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3648996716590898807.post-4660101724215284147</id><published>2008-10-12T17:21:00.000-04:00</published><updated>2008-10-12T17:23:58.174-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint remote debugging'/><title type='text'>Remote Debugging Custom Code in SharePoint</title><content type='html'>&lt;div&gt;The other day I ran into a situation where I needed to debug an assembly that I had placed in the GAC of the SharePoint server and did not have Visual Studio installed on the SharePoint machine. I knew there were ways to attach to a process so I did a search to see if there was a way I could remotely attach to the process from Visual Studio running on my machine. &lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;The process is pretty easy:&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;1. Locate the msvsmon.exe file located in C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\Remote Debugger\x86. This file is located on the machine that has Visual Studio installed on it.&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;2. Copy this file to the machine that you want to debug the code on (the SharePoint machine).&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;3. Run the exe. This will create a small window on the server that says the remote debugging server is waiting.&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;4. In Visual Studio on your machine, select Tools -&gt; Attach to Process.&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;5. Get the process ID for the SharePoint web app you want to debug. You can do this by running the iisapp command from the SharePoint server command line. This will list the AppIDs and the name of the Web applications running on your server.&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;6. In the Attach to Process dialog, in the Qualifier drop down select the browse button and browse for the SharePoint machine. &lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;7. Once you have the machine, select the process name (w3wp.exe) and the ID that matches the Web app that you want to debug. &lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;8. Click attach and start debugging.&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;This works fairly well. Some things you are trying to do will not work all that well with the remote debugging, such as updating a list item, but it will allow you to step through your code to figure out why something might not be working.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/4660101724215284147/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3648996716590898807&amp;postID=4660101724215284147' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/posts/default/4660101724215284147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/posts/default/4660101724215284147'/><link rel='alternate' type='text/html' href='http://www.michaelmarkel.com/2008/10/remote-debugging-custom-code-in.html' title='Remote Debugging Custom Code in SharePoint'/><author><name>Michael Markel</name><uri>http://www.blogger.com/profile/00553854223777092923</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3648996716590898807.post-8883786329778040872</id><published>2008-10-08T19:52:00.000-04:00</published><updated>2008-10-08T19:54:42.895-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Accessing SharePoint Attachments'/><category scheme='http://www.blogger.com/atom/ns#' term='SPListItem attachments'/><category scheme='http://www.blogger.com/atom/ns#' term='SPAttachmentCollection'/><title type='text'>Accessing Attachments for an SPListItem</title><content type='html'>&lt;div&gt;Today I was working on a project that needed some custom screens in SharePoint and manipulated a SharePoint list. I finished most of the screens to manipulate the list item itself and was about to move onto adding attachments to the list item. I began by try to iterate through each file in the SPAttachmentCollection that you can acess via the list item object. When I ran the page I kept getting an error that said it could not cast from string to SPFile object. I started commenting out lines to figure out where it was trying to cast a string into an SPFile because I did not do that explicitly in any of my code. &lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;I finally got to the line that said &lt;em&gt;For Each attachment As SPFile in AttachmentCollection.&lt;/em&gt; This was the line that was throwing the error. So I did some searching online and found that the SPAttachmentCollection only returns a string and not the actual attachments. The only way to get to the attachments is to navigate into the folder that holds the attachments.&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;The folder is located at Lists/{ListName}/Attachements/{ListItemID}. You can get to this programmatically in the following manner:&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;Dim folder As SPFolder = site.Folders("Lists").SubFolders(list.Title).SubFolders("Attachements").SubFolders(listItem.ID.ToString)&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;Once you have that folder you can iterate through each SPFile (that represents an attachment) and get back information such as the Url or the Name of the file. I used this syntax to render out the collection of attachments so the user could see them and open them. After figuring out this snag I was able to easily add attachments to a list item and then view the attachments for that list item.&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;As a side note, some people might be asking why I did not use the built-in New and Edit screens. I needed to be able to modify columns that were visible to certain groups of people. People that needed to review items had additional columns that they could fill out and those people that originally fill out the form should not see those columns. I tried accomplishing this in SharePoint Designer by customizing the New Form but I found that the atachment link no longer worked; it was throwing a Javascript error after I customized it, so I decided to create a custom screen that would allow me to run some security validations and redirect users to the proper form based on their group memberships.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/8883786329778040872/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3648996716590898807&amp;postID=8883786329778040872' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/posts/default/8883786329778040872'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/posts/default/8883786329778040872'/><link rel='alternate' type='text/html' href='http://www.michaelmarkel.com/2008/10/accessing-attachments-for-splistitem.html' title='Accessing Attachments for an SPListItem'/><author><name>Michael Markel</name><uri>http://www.blogger.com/profile/00553854223777092923</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3648996716590898807.post-8062513417268825321</id><published>2008-10-02T19:29:00.000-04:00</published><updated>2008-10-02T19:30:12.328-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SPGridView and Postback error'/><category scheme='http://www.blogger.com/atom/ns#' term='SPGridView'/><category scheme='http://www.blogger.com/atom/ns#' term='postback error'/><title type='text'>SPGridView and control with specified ID could not be found error</title><content type='html'>&lt;div&gt;Today I was working on creating some custom SharePoint application pages that utilized the SPGridView to display data from a list I had in SharePoint. I used &lt;a href="http://blogs.msdn.com/powlo/archive/2007/02/25/displaying-custom-data-through-sharepoint-lists-using-spgridview-and-spmenufield.aspx"&gt;Powlo's blog post &lt;/a&gt;on SPGridViews as a starting point. I set up my GridView and attached it to my data source (SharePoint List) and was excited to see how easy it was to bind the data. &lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;The next thing I wanted to do was filter the data in the SPGridView to only display items created by the current user. I found this &lt;a href="http://sharethelearning.blogspot.com/2007/05/using-parameters-in-selectcommand-of.html"&gt;post&lt;/a&gt; that explained how to build a select command using CAML that would filter down the data. This is exactly what I wanted. &lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;So the next logical step in my journey was to allow the user to filter on different criteria and then filter the SPGridView and then re-display the data. I added a button to cause the page to post back and refresh the data in the GridView. I tested it out and my filter worked fine, THE FIRST TIME. The minute I went to click on the button after the initial post back, I got an ugly error -&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;"A control with the specified ID 'SubmittedListMenu' could not be found within the scope of the current naming container. ..." and it continued into the method calls.&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;I looked on the net for anything that looked similar to this error and found one &lt;a href="http://www.thesug.org/blogs/patrickr/Lists/Posts/Post.aspx?List=8afc69af%2Df9fc%2D4786%2D816f%2D6419264c42da&amp;amp;ID=2"&gt;post &lt;/a&gt; about issues with post backs and the SPGridView control. This did not help me out, but it got me thinking that the issue was probably in the fact taht data rows were available before that postback that would not be after the postback. So I went into the properties for the SPGridView and set the EnableViewState to false. I then went back to the page and tried it. This time since I was not tryint to keep track of the child controls in the GridView, I could keep hitting the submit button without any problems. As long as you don't need the ViewState enabled on that control, this is an easy solution to a problem that was not so easy to figure out. &lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;Chalk up another afternoon to SharePoint debugging.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/8062513417268825321/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3648996716590898807&amp;postID=8062513417268825321' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/posts/default/8062513417268825321'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/posts/default/8062513417268825321'/><link rel='alternate' type='text/html' href='http://www.michaelmarkel.com/2008/10/spgridview-and-control-with-specified.html' title='SPGridView and control with specified ID could not be found error'/><author><name>Michael Markel</name><uri>http://www.blogger.com/profile/00553854223777092923</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3648996716590898807.post-5389656326384595139</id><published>2008-09-29T17:40:00.000-04:00</published><updated>2008-09-29T17:40:42.386-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Editing form fields in SharePoint list.'/><title type='text'>Editing Form Fields in a SharePoint List</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.michaelmarkel.com/uploaded_images/listview-703159.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://www.michaelmarkel.com/uploaded_images/listview-703067.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;If you have been developing in SharePoint for any length of time, you have probably wanted to edit the default newform.aspx and editform.aspx to make it look a certain way of to hide columns in one view but not another. You can do this using SharePoint Designer by navigating to your SharePoint list and opening up NewForm.aspx. You may have deleted the exisitng ListFormWebPart, added your cuastom stuff, saved the form, and then tried to click on the new button in the list only to get an invalid URL dialog.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;In order to prevent this DON'T delete the existing web part, hide it. Then add your custom list form and edit the controls and tables as you see fit.&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;Then you can save the form and click on the new button in the list and have it direct to your custom form. &lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;The issue is documented in this &lt;a href="http://support.microsoft.com/kb/935504"&gt;Microsoft KB article&lt;/a&gt;. &lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/5389656326384595139/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3648996716590898807&amp;postID=5389656326384595139' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/posts/default/5389656326384595139'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/posts/default/5389656326384595139'/><link rel='alternate' type='text/html' href='http://www.michaelmarkel.com/2008/09/editing-form-fields-in-sharepoint-list.html' title='Editing Form Fields in a SharePoint List'/><author><name>Michael Markel</name><uri>http://www.blogger.com/profile/00553854223777092923</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3648996716590898807.post-3913555678248816539</id><published>2008-09-24T19:15:00.000-04:00</published><updated>2008-09-24T19:15:58.729-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DataFormatString bug'/><title type='text'>DataFormatString Not Working in SharePoint</title><content type='html'>&lt;div&gt;Today I was trying to use a BoundField to show some data on the main page of my SharePoint site. I bound the field to the DataSource and then went to edit the DataFormatString so that the data would be formatted into a currency format. &lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;I would save the page and then refresh it and no currency formatting. I thought at first that I just didn't understand how the format string works so I went to MSDN and looked it up. As long as I put {0:c0} I should be able to get back a number with currency formatting with no decimal places. So I made sure that my page was saved and that it was rendering the most recent copy. It was!&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;So I did a quick search and came across this article from &lt;a href="http://www.whitworth.org/Blog/PermaLink,guid,fca48629-6ae1-48d9-8bf4-ef86a1de07c1.aspx"&gt;Rickey Whitworth&lt;/a&gt; that described a Bug in the DataFormatString. You need to make sure that the HtmlEncode property is set to false, otherwise the formatting will not take effect. &lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;The minute I changed the HtmlEncode property to false, all of my currency formatting was there. &lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/3913555678248816539/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3648996716590898807&amp;postID=3913555678248816539' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/posts/default/3913555678248816539'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/posts/default/3913555678248816539'/><link rel='alternate' type='text/html' href='http://www.michaelmarkel.com/2008/09/dataformatstring-not-working-in.html' title='DataFormatString Not Working in SharePoint'/><author><name>Michael Markel</name><uri>http://www.blogger.com/profile/00553854223777092923</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3648996716590898807.post-8039943877692423131</id><published>2008-09-23T20:17:00.000-04:00</published><updated>2008-09-23T20:17:00.576-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ViewFormPagesLockDown feature'/><category scheme='http://www.blogger.com/atom/ns#' term='blocking anonymous access to layouts pages'/><title type='text'>What can users find on your public-facing SharePoint site?</title><content type='html'>&lt;div&gt;I recently found a blog post by &lt;a href="http://blog.richfin.net/"&gt;Rich Finn&lt;/a&gt; that discussed activating the ViewFormPagesLockDown feature when using SharePoint as a public-facing Internet site. This feature is only available in MOSS and blocks anonymous access users from seeing form pages such as EditForm.aspx and DispForm.aspx and also blocks anonymous access to any pages residing in the _layouts folders that inherit from LayoutsPageBase. &lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;By default, a publishing portal site will have this feature activated but the collaboration portal site definition does not. &lt;a href="http://blog.richfinn.net/2008/07/22/PublicFacingSharePointHeresSomethingScaryPleaseActivateViewFormPagesLockDown.aspx"&gt;Rich's post&lt;/a&gt; contains a nice link that does a live search of the many sites that do not have this feature activated. &lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;It is definitely something you will want to double check to make sure that your pubic-facing site is locked down so anonymouse users can't access pages they shouldn't. &lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/8039943877692423131/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3648996716590898807&amp;postID=8039943877692423131' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/posts/default/8039943877692423131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/posts/default/8039943877692423131'/><link rel='alternate' type='text/html' href='http://www.michaelmarkel.com/2008/09/what-can-users-find-on-your-public.html' title='What can users find on your public-facing SharePoint site?'/><author><name>Michael Markel</name><uri>http://www.blogger.com/profile/00553854223777092923</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3648996716590898807.post-1320616874546629790</id><published>2008-09-18T20:42:00.000-04:00</published><updated>2008-09-18T20:43:05.524-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='browsers'/><category scheme='http://www.blogger.com/atom/ns#' term='Google Chrome'/><category scheme='http://www.blogger.com/atom/ns#' term='browser incompatabilities'/><title type='text'>Google Chrome</title><content type='html'>Chrome was released last week and I downloaded it right away to check and see how sites would render in it compared to other browsers. From a SharePoint point of view, the site I work on rendered fine and functioned as expected. Chrome does render some CSS styles differently which will cause headaches for web designers. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Other features of Chrome that are interesting include separate sand boxes for each tab so if one tab crashes it will not affect the other tabs. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When using the browser it tracks where you go and adds it to your browser history and search history. If you want to browse somewhere without it showing up in your history or without leaving traces (such as cookies) on your computer there is the option to use an Incognito Window. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Google Gears is built into the browser to allow you to work offline with many of the Google services including Reader and Gmail. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There is the option to create Application Shortcuts when you browse to a site. If you go to Gmail or Google Reader and then click on the icon that looks like a page and select Create Application Shortcuts, it will create a shortcut on your desktop to connect to that application.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There is only one box to enter in either your searches or URLs. You simply enter the search keywords into the box and hit enter to get search results. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There is a developer menu that includes a Javascript Console, the ability to debug Javascript, and a task manager to see how many CPU cycles each tab is using and the ability to kill a tab's process.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Chrome is also faster on loading many sites that I have tried it with and is based on WebKit. If you want to try it for yourself you can get it from the&lt;a href="http://www.google.com/chrome"&gt; Google site&lt;/a&gt;. &lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/1320616874546629790/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3648996716590898807&amp;postID=1320616874546629790' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/posts/default/1320616874546629790'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/posts/default/1320616874546629790'/><link rel='alternate' type='text/html' href='http://www.michaelmarkel.com/2008/09/google-chrome.html' title='Google Chrome'/><author><name>Michael Markel</name><uri>http://www.blogger.com/profile/00553854223777092923</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3648996716590898807.post-411676304287622338</id><published>2008-09-11T11:38:00.004-04:00</published><updated>2008-09-11T20:39:55.234-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Kalamazoo .Net Developer Groups'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft Developers of Southwest Michigan'/><category scheme='http://www.blogger.com/atom/ns#' term='MDSM'/><title type='text'>Microsoft Developers of Southwest Michigan September Meeting</title><content type='html'>&lt;div&gt;Since SharePoint development is closely related and relies on ASP.Net development, I have found it useful to attend .Net developer groups to keep up on new things in the pipeline and tips and tricks that you can't always find on your own. One such group is the Microsoft Developers of Southwest Michigan (MDSM). The September meeting will feature Mike Eaton and will cover Alt.Net, the community and you (it will cover history behind the Alt.Net group, dive into some of the principles and practices, and how we as a community  can drive change in the world of software development. &lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;For more information and directions to the meeting visit the &lt;a href="http://www.devmi.org/Pages/default.aspx"&gt;MDSM site&lt;/a&gt;. &lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;To RSVP for the meeting, send an email to &lt;a href="mailto:contact@devmi.com"&gt;contact@devmi.com&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/411676304287622338/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3648996716590898807&amp;postID=411676304287622338' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/posts/default/411676304287622338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/posts/default/411676304287622338'/><link rel='alternate' type='text/html' href='http://www.michaelmarkel.com/2008/09/microsoft-developers-of-southwest.html' title='Microsoft Developers of Southwest Michigan September Meeting'/><author><name>Michael Markel</name><uri>http://www.blogger.com/profile/00553854223777092923</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3648996716590898807.post-2352695920307848947</id><published>2008-09-10T20:40:00.000-04:00</published><updated>2008-09-10T20:40:44.092-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Magazine'/><title type='text'>SharePoint Magazine</title><content type='html'>&lt;div&gt;I recently found a post that pointed me to &lt;a href="http://sharepointmagazine.net/"&gt;SharePoint Magazine&lt;/a&gt;. It is completely free and offers articles on development, products, companies, and news. I expect many great articles to come out of this online magazine. &lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/2352695920307848947/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3648996716590898807&amp;postID=2352695920307848947' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/posts/default/2352695920307848947'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/posts/default/2352695920307848947'/><link rel='alternate' type='text/html' href='http://www.michaelmarkel.com/2008/09/sharepoint-magazine.html' title='SharePoint Magazine'/><author><name>Michael Markel</name><uri>http://www.blogger.com/profile/00553854223777092923</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3648996716590898807.post-3836408379332909071</id><published>2008-09-03T22:28:00.000-04:00</published><updated>2008-09-03T22:28:48.076-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='delegating Exchange permissions through Active Directory'/><title type='text'>Delegating Sending Mail on Behalf of in Exchange</title><content type='html'>&lt;div&gt;Today my colleague asked me if I had any idea on how to delegate permissions for an Exchange mailbox for a user if the user was not around (so we didn't have access to their outlook). I was not sure how to accomplish this so I did a quick search and came across an article by &lt;a href="http://www.cryer.co.uk/brian/index.htm"&gt;Brian Cryer&lt;/a&gt;. I found that you can delegate permissions through Active Directory and this definitely simplifies trying to do this for users that could be spread throughout the country. The process is as follows and if you check out &lt;a href="http://www.cryer.co.uk/brian/msexchange/exch_howto_grant_send_on_behalf_of.htm"&gt;Brian's post&lt;/a&gt; there is information on delegating other permissions as well:&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Log onto the server running Exchange. &lt;/li&gt;&lt;br /&gt;&lt;li&gt;Run Active Directory Users and Computers. &lt;/li&gt;&lt;br /&gt;&lt;li&gt;Find the user's account that you want to be able to send on behalf of, and open up the account properties. &lt;/li&gt;&lt;br /&gt;&lt;li&gt;Select the "Exchange General" tab. &lt;/li&gt;&lt;br /&gt;&lt;li&gt;Click on the [Delivery Options...] button.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Click the [Add ...] button and add the user (or users) that are to be granted permission to send on behalf of this account. &lt;/li&gt;&lt;br /&gt;&lt;li&gt;Click [OK] button to close the "Delivery Options" dialog.&lt;/li&gt;&lt;br /&gt;&lt;li&gt; Click [OK] button to close the account properties dialog.. &lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;p&gt;That's all there is to it. Thanks to Brian for an excellent and simple post on how to accomplish this.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/3836408379332909071/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3648996716590898807&amp;postID=3836408379332909071' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/posts/default/3836408379332909071'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/posts/default/3836408379332909071'/><link rel='alternate' type='text/html' href='http://www.michaelmarkel.com/2008/09/delegating-sending-mail-on-behalf-of-in.html' title='Delegating Sending Mail on Behalf of in Exchange'/><author><name>Michael Markel</name><uri>http://www.blogger.com/profile/00553854223777092923</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3648996716590898807.post-6536984761715538207</id><published>2008-08-28T18:58:00.000-04:00</published><updated>2008-08-28T18:58:58.473-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MOSS 2007 Publishing'/><category scheme='http://www.blogger.com/atom/ns#' term='List Does Not Exist Error'/><title type='text'>List Does Not Exist Error</title><content type='html'>&lt;div&gt;If you have been working with Web Content Management in MOSS 2007, you may have run across a common error: 'List does not exist. The page you selected contains a list that does not exist. It may have been deleted by another user.' &lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;This error sounds pretty scary. The real reason you see this error when trying to view a page is that the page is referencing another file that does not have a published version. This file could be a page layout or a master page file. If you go to the master page gallery and publish a version of both the page layout and the master page, you will be able to see your page without any errors. &lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/6536984761715538207/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3648996716590898807&amp;postID=6536984761715538207' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/posts/default/6536984761715538207'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/posts/default/6536984761715538207'/><link rel='alternate' type='text/html' href='http://www.michaelmarkel.com/2008/08/list-does-not-exist-error.html' title='List Does Not Exist Error'/><author><name>Michael Markel</name><uri>http://www.blogger.com/profile/00553854223777092923</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3648996716590898807.post-5510698797246148282</id><published>2008-08-26T20:25:00.000-04:00</published><updated>2008-08-26T20:26:03.263-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint development podcast'/><title type='text'>Podcasts for SharePoint Development</title><content type='html'>Microsoft has been offering a podcast that covers many Microsoft products. Included in this podcast is information about SharePoint development, scaling, configuration, and how Microsoft is leveraging SharePoint internally. Some of the casts are for beginners, but there are also advanced topics as well.&lt;br /&gt;&lt;br /&gt;To get the podcast: Log into iTunes and seach for MSDN podcasts or navigate to the &lt;a href="http://msdn.microsoft.com/en-us/events/default.aspx"&gt;MSDN site&lt;/a&gt; for a list or webcasts and podcasts.</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/5510698797246148282/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3648996716590898807&amp;postID=5510698797246148282' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/posts/default/5510698797246148282'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3648996716590898807/posts/default/5510698797246148282'/><link rel='alternate' type='text/html' href='http://www.michaelmarkel.com/2008/08/podcasts-for-sharepoint-development.html' title='Podcasts for SharePoint Development'/><author><name>Michael Markel</name><uri>http://www.blogger.com/profile/00553854223777092923</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>