<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>Web/ASP.NET</title><link>http://ryanfarley.com/blog/category/57.aspx</link><description>Web/ASP.NET</description><managingEditor>Ryan Farley</managingEditor><dc:language>en-US</dc:language><generator>.Text Version 0.95.2004.102</generator><item><dc:creator>Ryan Farley</dc:creator><title>SQL Queries to Analyze SharePoint Usage</title><link>http://ryanfarley.com/blog/archive/2006/05/30/23103.aspx</link><pubDate>Tue, 30 May 2006 11:45:00 GMT</pubDate><guid>http://ryanfarley.com/blog/archive/2006/05/30/23103.aspx</guid><wfw:comment>http://ryanfarley.com/blog/comments/23103.aspx</wfw:comment><comments>http://ryanfarley.com/blog/archive/2006/05/30/23103.aspx#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://ryanfarley.com/blog/comments/commentRss/23103.aspx</wfw:commentRss><trackback:ping>http://ryanfarley.com/blog/services/trackbacks/23103.aspx</trackback:ping><description>&lt;P&gt;I came across this list on CodeProject of SQL Queries to analyze SharePoint details and usage. This is an awesome list. Granted it does bypass the SBS object model so isn't the recommended route, but still a great list of queries you could use to make reporting on your SharePoint sites a breeze.&lt;/P&gt;
&lt;P&gt;
&lt;DIV class=link&gt;&lt;A href="http://www.codeproject.com/dotnet/QueriesToAnalyzeSPUsage.asp" target=_blank&gt;Useful SQL Queries to Analyze and Monitor SharePoint Portal Solutions Usage&lt;/A&gt; &lt;/DIV&gt;
&lt;/P&gt;&lt;img src ="http://ryanfarley.com/blog/aggbug/23103.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Ryan Farley</dc:creator><title>Top 30 Popular Posts</title><link>http://ryanfarley.com/blog/archive/2006/05/25/22689.aspx</link><pubDate>Thu, 25 May 2006 11:41:00 GMT</pubDate><guid>http://ryanfarley.com/blog/archive/2006/05/25/22689.aspx</guid><wfw:comment>http://ryanfarley.com/blog/comments/22689.aspx</wfw:comment><comments>http://ryanfarley.com/blog/archive/2006/05/25/22689.aspx#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://ryanfarley.com/blog/comments/commentRss/22689.aspx</wfw:commentRss><trackback:ping>http://ryanfarley.com/blog/services/trackbacks/22689.aspx</trackback:ping><description>&lt;P&gt;I started this blog in August of 2003, almost 3 years ago. I've made 176 posts in those 3 years. I don't post too often to my blog because I'm not all that big on posting stories about my kids, wife, dog, etc - although those do come in every now and then. Anyway, even when I have lulls where I am not posting as much, my traffic seems to stay pretty consistent. I'm actually amazed at how much traffic I get, especially when I consider how often I get around to posting (big thanks to all the visitors over the years). &lt;/P&gt;
&lt;P&gt;Some of my posts have apparently been useful :-), so I thought I would post the top 30 most popular posts I've made over the years (based on total number of unique views to the posts).&lt;/P&gt;
&lt;P&gt;
&lt;BLOCKQUOTE style="FONT-STYLE: normal"&gt;&lt;img src="/skins/ryanfarleyxpblue/images/icon-tip.gif" align="absmiddle"&gt; &lt;b&gt;&lt;A href="http://ryanfarley.com/blog/archive/2004/12/21/1325.aspx"&gt;1. Set Focus to an ASP.NET Control&lt;/a&gt;&lt;/b&gt;&lt;br&gt;Setting focus to controls in your&amp;nbsp;ASP.NET application&amp;nbsp;is a part of giving your end users the feel that they have come to expect. Making your web applications act more like Windows applications is a key to success (IMO). While setting focus to con...&lt;br&gt;&lt;b&gt;Total views: &lt;i&gt;371,568&lt;/i&gt; - Posted on: 21-Dec-2004 &lt;/b&gt;&lt;br&gt;&lt;br&gt;
&lt;img src="/skins/ryanfarleyxpblue/images/icon-tip.gif" align="absmiddle"&gt; &lt;b&gt;&lt;A href="http://ryanfarley.com/blog/archive/2004/12/23/1330.aspx"&gt;2. Using the Web Browser Control in your C# Applications&lt;/a&gt;&lt;/b&gt;&lt;br&gt;It can be a powerful thing to display dynamic HTML in your C# applications. It can give your applications a modern look and feel and can make displaying data in non-standard ways easy with some simple markup. We have the web browser ActiveX control that wr...&lt;br&gt;&lt;b&gt;Total views: &lt;i&gt;232,037&lt;/i&gt; - Posted on: 23-Dec-2004 &lt;/b&gt;&lt;br&gt;&lt;br&gt;
&lt;img src="/skins/ryanfarleyxpblue/images/icon-tip.gif" align="absmiddle"&gt; &lt;b&gt;&lt;A href="http://ryanfarley.com/blog/archive/2004/07/13/879.aspx"&gt;3. Writing to Your .NET Application's Config File&lt;/a&gt;&lt;/b&gt;&lt;br&gt;There's likely been times that you might have thought that it would make things convenient to write back to your .NET application's config file. The framework provides simple methods for reading from the config file, but gives you nothing for writing value...&lt;br&gt;&lt;b&gt;Total views: &lt;i&gt;197,345&lt;/i&gt; - Posted on: 13-Jul-2004 &lt;/b&gt;&lt;br&gt;&lt;br&gt;
&lt;img src="/skins/ryanfarleyxpblue/images/icon-tip.gif" align="absmiddle"&gt; &lt;b&gt;&lt;A href="http://ryanfarley.com/blog/archive/2004/12/19/1313.aspx"&gt;4. Tips for SQL Server Identity Columns&lt;/a&gt;&lt;/b&gt;&lt;br&gt;Tips on allowing inserts to identity columns and also for reseeding the identity value for a table....&lt;br&gt;&lt;b&gt;Total views: &lt;i&gt;117,941&lt;/i&gt; - Posted on: 19-Dec-2004 &lt;/b&gt;&lt;br&gt;&lt;br&gt;
&lt;img src="/skins/ryanfarleyxpblue/images/icon-tip.gif" align="absmiddle"&gt; &lt;b&gt;&lt;A href="http://ryanfarley.com/blog/archive/2004/01/07/261.aspx"&gt;5. Multiple Monitors rule&lt;/a&gt;&lt;/b&gt;&lt;br&gt;I love multiple monitors. I can't even imagine trying to work without multiple monitors and don't think I could ever go back to a single monitor....&lt;br&gt;&lt;b&gt;Total views: &lt;i&gt;96,533&lt;/i&gt; - Posted on: 7-Jan-2004 &lt;/b&gt;&lt;br&gt;&lt;br&gt;
&lt;img src="/skins/ryanfarleyxpblue/images/icon-tip.gif" align="absmiddle"&gt; &lt;b&gt;&lt;A href="http://ryanfarley.com/blog/archive/2005/08/23/8540.aspx"&gt;6. Unable to Start Debugging on the Web Server&lt;/a&gt;&lt;/b&gt;&lt;br&gt;I hate that, and it seems that every time I (or a co-worker) gets the error &amp;#8220;Unable to Start Debugging on the Web Server&amp;#8221; on a machine when attempting to debug an ASP.NET project, I have to scramble to remember what to look at. Here's a few things that has...&lt;br&gt;&lt;b&gt;Total views: &lt;i&gt;91,037&lt;/i&gt; - Posted on: 23-Aug-2005 &lt;/b&gt;&lt;br&gt;&lt;br&gt;
&lt;img src="/skins/ryanfarleyxpblue/images/icon-tip.gif" align="absmiddle"&gt; &lt;b&gt;&lt;A href="http://ryanfarley.com/blog/archive/2004/05/16/649.aspx"&gt;7. Stop Hijacking my Browser!&lt;/a&gt;&lt;/b&gt;&lt;br&gt;Often in applications you have the need to launch a browser window to a specified URL. I recently evaluated various RSS readers where links to blog posts could be launched in an external browser window. What I found was that most of these applications woul...&lt;br&gt;&lt;b&gt;Total views: &lt;i&gt;90,029&lt;/i&gt; - Posted on: 16-May-2004 &lt;/b&gt;&lt;br&gt;&lt;br&gt;
&lt;img src="/skins/ryanfarleyxpblue/images/icon-tip.gif" align="absmiddle"&gt; &lt;b&gt;&lt;A href="http://ryanfarley.com/blog/archive/2005/03/11/1886.aspx"&gt;8. Determining the Control that Caused a PostBack&lt;/a&gt;&lt;/b&gt;&lt;br&gt;Many times you might need to perform some action on an ASP.NET postback based on the control that caused the postback to occur. Some scenarios for this might include a form with many regions, each having it's own CustomValidator and the ability to perform...&lt;br&gt;&lt;b&gt;Total views: &lt;i&gt;69,089&lt;/i&gt; - Posted on: 11-Mar-2005 &lt;/b&gt;&lt;br&gt;&lt;br&gt;
&lt;img src="/skins/ryanfarleyxpblue/images/icon-tip.gif" align="absmiddle"&gt; &lt;b&gt;&lt;A href="http://ryanfarley.com/blog/archive/2005/01/14/1439.aspx"&gt;9. Solving problems through programming...and why the Skype API sucks&lt;/a&gt;&lt;/b&gt;&lt;br&gt;I love to take the approach of solving computing problems through programming. Sometimes it backfires and I over-complicate the problem (I have been known to prematurely generalize from time to time). But usually I bask in the greatness of being a programm...&lt;br&gt;&lt;b&gt;Total views: &lt;i&gt;60,149&lt;/i&gt; - Posted on: 14-Jan-2005 &lt;/b&gt;&lt;br&gt;&lt;br&gt;
&lt;img src="/skins/ryanfarleyxpblue/images/icon-tip.gif" align="absmiddle"&gt; &lt;b&gt;&lt;A href="http://ryanfarley.com/blog/archive/2004/05/05/599.aspx"&gt;10. Enabling XP Themes in your .NET Applications&lt;/a&gt;&lt;/b&gt;&lt;br&gt;When you build Windows applications in .NET, by default your application will not have support for XP Themes, or Visual Styles. It is an easy enough task to do, and I think it goes a long way in giving your application a complete and professional look &amp; fe...&lt;br&gt;&lt;b&gt;Total views: &lt;i&gt;49,397&lt;/i&gt; - Posted on: 5-May-2004 &lt;/b&gt;&lt;br&gt;&lt;br&gt;
&lt;img src="/skins/ryanfarleyxpblue/images/icon-tip.gif" align="absmiddle"&gt; &lt;b&gt;&lt;A href="http://ryanfarley.com/blog/archive/2005/02/15/1689.aspx"&gt;11. On the Subject of Dates in T-SQL&lt;/a&gt;&lt;/b&gt;&lt;br&gt;While we're on the subject of dates in T-SQL, I never liked getting the month and year for a date and sticking an '01' in the middle (then casting it all back to a datetime) to get the first day of the month for a given date value. Then you do the same to...&lt;br&gt;&lt;b&gt;Total views: &lt;i&gt;42,317&lt;/i&gt; - Posted on: 15-Feb-2005 &lt;/b&gt;&lt;br&gt;&lt;br&gt;
&lt;img src="/skins/ryanfarleyxpblue/images/icon-tip.gif" align="absmiddle"&gt; &lt;b&gt;&lt;A href="http://ryanfarley.com/blog/archive/2005/02/14/1685.aspx"&gt;12. Determining if a Date is a Weekday in T-SQL&lt;/a&gt;&lt;/b&gt;&lt;br&gt;I was reminded of a SQL function to determine if a date was a weekday or a weekend I wrote a while back when I saw the requirements of a project a colleague was working on. You'll see this requirement fairly often in many business applications. A company m...&lt;br&gt;&lt;b&gt;Total views: &lt;i&gt;40,265&lt;/i&gt; - Posted on: 14-Feb-2005 &lt;/b&gt;&lt;br&gt;&lt;br&gt;
&lt;img src="/skins/ryanfarleyxpblue/images/icon-tip.gif" align="absmiddle"&gt; &lt;b&gt;&lt;A href="http://ryanfarley.com/blog/archive/2004/06/08/766.aspx"&gt;13. Awesome web.config Changes in ASP.NET 2.0&lt;/a&gt;&lt;/b&gt;&lt;br&gt;There are some really cool changes coming in ASP.NET's web.config files that I am really excited about. I'll just point out a few that I've used (I hate going back to 1.1 because I can't use them). The web.config file in ASP.NET 2.0 allows you to set a lot...&lt;br&gt;&lt;b&gt;Total views: &lt;i&gt;40,145&lt;/i&gt; - Posted on: 8-Jun-2004 &lt;/b&gt;&lt;br&gt;&lt;br&gt;
&lt;img src="/skins/ryanfarleyxpblue/images/icon-tip.gif" align="absmiddle"&gt; &lt;b&gt;&lt;A href="http://ryanfarley.com/blog/archive/2004/12/18/1300.aspx"&gt;14. Setting the Value of a TextBox with TextMode=Password&lt;/a&gt;&lt;/b&gt;&lt;br&gt;When the TextMode property of an ASP.NET TextBox is set to Password the value set in the Text property will not display at runtime. This can be a pain, however it is actually by design to prevent the unmasked password from being displayed in the HTML sourc...&lt;br&gt;&lt;b&gt;Total views: &lt;i&gt;36,984&lt;/i&gt; - Posted on: 18-Dec-2004 &lt;/b&gt;&lt;br&gt;&lt;br&gt;
&lt;img src="/skins/ryanfarleyxpblue/images/icon-tip.gif" align="absmiddle"&gt; &lt;b&gt;&lt;A href="http://ryanfarley.com/blog/archive/2004/10/25/1127.aspx"&gt;15. T-SQL Olympics&lt;/a&gt;&lt;/b&gt;&lt;br&gt;OK, there is not an Olympics for T-SQL - but there should be. A friend of mine and I were talking the other day about &amp;#8220;gold-medal&amp;#8221; T-SQL we've come accross. The one that wins the gold for me is the code I found a long time ago on SQL Server Central from Ma...&lt;br&gt;&lt;b&gt;Total views: &lt;i&gt;36,617&lt;/i&gt; - Posted on: 25-Oct-2004 &lt;/b&gt;&lt;br&gt;&lt;br&gt;
&lt;img src="/skins/ryanfarleyxpblue/images/icon-tip.gif" align="absmiddle"&gt; &lt;b&gt;&lt;A href="http://ryanfarley.com/blog/archive/2004/03/01/390.aspx"&gt;16. T-SQL: SET vs SELECT when assigning variables&lt;/a&gt;&lt;/b&gt;&lt;br&gt;Do you know what the difference is between using SET and SELECT when assigning varaibles in T-SQL? Well, there is a difference. I came accross a great article by Narayana Vyas Kondreddi from the UK that describes the difference between the two....&lt;br&gt;&lt;b&gt;Total views: &lt;i&gt;36,204&lt;/i&gt; - Posted on: 1-Mar-2004 &lt;/b&gt;&lt;br&gt;&lt;br&gt;
&lt;img src="/skins/ryanfarleyxpblue/images/icon-tip.gif" align="absmiddle"&gt; &lt;b&gt;&lt;A href="http://ryanfarley.com/blog/archive/2004/12/27/1334.aspx"&gt;17. Interacting with the Web Browser Control&lt;/a&gt;&lt;/b&gt;&lt;br&gt;In my last post, I outlined some ways to make the Web Browser control more useful in your C# applications, to include things such as printing and setting the text or html of the browser dynamically. That is all good, but in a typical application it does li...&lt;br&gt;&lt;b&gt;Total views: &lt;i&gt;35,885&lt;/i&gt; - Posted on: 27-Dec-2004 &lt;/b&gt;&lt;br&gt;&lt;br&gt;
&lt;img src="/skins/ryanfarleyxpblue/images/icon-tip.gif" align="absmiddle"&gt; &lt;b&gt;&lt;A href="http://ryanfarley.com/blog/archive/2004/04/12/526.aspx"&gt;18. Disabling the Windows Close action&lt;/a&gt;&lt;/b&gt;&lt;br&gt;There are times that you'll see a Window that has a close button in the titlebar, but it is disabled. This is often found in applications where the dialog/window changes it's status past a stoppable point so the Windows close action is removed so the user...&lt;br&gt;&lt;b&gt;Total views: &lt;i&gt;35,796&lt;/i&gt; - Posted on: 12-Apr-2004 &lt;/b&gt;&lt;br&gt;&lt;br&gt;
&lt;img src="/skins/ryanfarleyxpblue/images/icon-tip.gif" align="absmiddle"&gt; &lt;b&gt;&lt;A href="http://ryanfarley.com/blog/archive/2004/03/23/465.aspx"&gt;19. Creating a IWin32Window from a Win32 Handle&lt;/a&gt;&lt;/b&gt;&lt;br&gt;There are times when you are integrating your .NET applications with other existing applications that you cannot modify and is possibly even non-.NET application. This can often result in problems integrating your .NET application's windows with the other...&lt;br&gt;&lt;b&gt;Total views: &lt;i&gt;35,465&lt;/i&gt; - Posted on: 23-Mar-2004 &lt;/b&gt;&lt;br&gt;&lt;br&gt;
&lt;img src="/skins/ryanfarleyxpblue/images/icon-tip.gif" align="absmiddle"&gt; &lt;b&gt;&lt;A href="http://ryanfarley.com/blog/archive/2004/05/14/629.aspx"&gt;20. In Search of the Perfect RSS Reader&lt;/a&gt;&lt;/b&gt;&lt;br&gt;For the last year or two, I've been switching from reader to reader. While each one had features that I loved, they all seemed to fall short on one thing or another and I was never really 100% pleased with any of them. I went from SharpReader, to RSSBandit...&lt;br&gt;&lt;b&gt;Total views: &lt;i&gt;33,384&lt;/i&gt; - Posted on: 14-May-2004 &lt;/b&gt;&lt;br&gt;&lt;br&gt;
&lt;img src="/skins/ryanfarleyxpblue/images/icon-tip.gif" align="absmiddle"&gt; &lt;b&gt;&lt;A href="http://ryanfarley.com/blog/archive/2005/02/17/1712.aspx"&gt;21. Flattening Out Data with One of the Coolest SQL Tricks Ever&lt;/a&gt;&lt;/b&gt;&lt;br&gt;Not sure why, but I seem to be on a T-SQL kick lately - so here's another T-SQL post. One of my favorite T-SQL hacks ever is one that can flatten out data by taking a value from multiple rows and concatenating the values into a single string....&lt;br&gt;&lt;b&gt;Total views: &lt;i&gt;33,281&lt;/i&gt; - Posted on: 17-Feb-2005 &lt;/b&gt;&lt;br&gt;&lt;br&gt;
&lt;img src="/skins/ryanfarleyxpblue/images/icon-tip.gif" align="absmiddle"&gt; &lt;b&gt;&lt;A href="http://ryanfarley.com/blog/archive/2004/06/16/788.aspx"&gt;22. Dynamically Loading Master Pages in ASP.NET 2.0&lt;/a&gt;&lt;/b&gt;&lt;br&gt;One of the cool new things introduced in ASP.NET 2.0 is Master Pages. Master Pages give you the ability to define a master page layout and look that is used throughout a site to give a consistent look &amp; feel to all pages. Any updates or changes to the look...&lt;br&gt;&lt;b&gt;Total views: &lt;i&gt;33,156&lt;/i&gt; - Posted on: 16-Jun-2004 &lt;/b&gt;&lt;br&gt;&lt;br&gt;
&lt;img src="/skins/ryanfarleyxpblue/images/icon-tip.gif" align="absmiddle"&gt; &lt;b&gt;&lt;A href="http://ryanfarley.com/blog/archive/2004/05/10/605.aspx"&gt;23. Communication between applications via Windows Messages&lt;/a&gt;&lt;/b&gt;&lt;br&gt;At times I'll build a suite of related, but separate applications. Even though each application is a separate executable, I like to be able to integrate the applications so they can work together. Sending messages between your applications is a great way t...&lt;br&gt;&lt;b&gt;Total views: &lt;i&gt;31,548&lt;/i&gt; - Posted on: 10-May-2004 &lt;/b&gt;&lt;br&gt;&lt;br&gt;
&lt;img src="/skins/ryanfarleyxpblue/images/icon-tip.gif" align="absmiddle"&gt; &lt;b&gt;&lt;A href="http://ryanfarley.com/blog/archive/2005/09/06/9208.aspx"&gt;24. Rendering Size (and other things) Correctly in FireFox&lt;/a&gt;&lt;/b&gt;&lt;br&gt;One thing that I just can't stand, is when a web page I build looks different in FireFox than how it looks in IE. Well, who doesn't?! The thing that really sucks is that there are things build in to how ASP.NET works that will cause this to happen. So unle...&lt;br&gt;&lt;b&gt;Total views: &lt;i&gt;31,325&lt;/i&gt; - Posted on: 6-Sep-2005 &lt;/b&gt;&lt;br&gt;&lt;br&gt;
&lt;img src="/skins/ryanfarleyxpblue/images/icon-tip.gif" align="absmiddle"&gt; &lt;b&gt;&lt;A href="http://ryanfarley.com/blog/archive/2004/05/26/737.aspx"&gt;25. Returning Objects from Web Services&lt;/a&gt;&lt;/b&gt;&lt;br&gt;When I work with web services I want things to work the same way as if I were working with a local layer that returns objects, not data. I don't want my code outside of the service to even see the data, just the objects that represent the data. Who doesn't...&lt;br&gt;&lt;b&gt;Total views: &lt;i&gt;27,545&lt;/i&gt; - Posted on: 26-May-2004 &lt;/b&gt;&lt;br&gt;&lt;br&gt;
&lt;img src="/skins/ryanfarleyxpblue/images/icon-tip.gif" align="absmiddle"&gt; &lt;b&gt;&lt;A href="http://ryanfarley.com/blog/archive/2005/02/23/1739.aspx"&gt;26. Disabling Auto-Complete on ASP.NET Forms&lt;/a&gt;&lt;/b&gt;&lt;br&gt;Popular browsers, such as Internet Explorer and Firefox support something called Auto-Complete. You've seen this many times. You go to a online form and as you start to type in fields you get a drop-down showing values you've typed in that field before. Th...&lt;br&gt;&lt;b&gt;Total views: &lt;i&gt;26,844&lt;/i&gt; - Posted on: 23-Feb-2005 &lt;/b&gt;&lt;br&gt;&lt;br&gt;
&lt;img src="/skins/ryanfarleyxpblue/images/icon-tip.gif" align="absmiddle"&gt; &lt;b&gt;&lt;A href="http://ryanfarley.com/blog/archive/2004/08/19/966.aspx"&gt;27. Intersection of Date Ranges&lt;/a&gt;&lt;/b&gt;&lt;br&gt;A friend of mine called me yesterday about a scheduling application he is working on. His question was so simple, or so it seemed, but it really drove me nuts. Basically he just wanted to find out if two date ranges intersected at all. Simple enough. It wa...&lt;br&gt;&lt;b&gt;Total views: &lt;i&gt;24,593&lt;/i&gt; - Posted on: 19-Aug-2004 &lt;/b&gt;&lt;br&gt;&lt;br&gt;
&lt;img src="/skins/ryanfarleyxpblue/images/icon-tip.gif" align="absmiddle"&gt; &lt;b&gt;&lt;A href="http://ryanfarley.com/blog/archive/2006/01/11/14992.aspx"&gt;28. Tricking out the Desktop&lt;/a&gt;&lt;/b&gt;&lt;br&gt;Something I have always been a sucker for is tricking out my desktop. I love any kind of tweak or gadget that enhances my pc and the whole user-experience thing. It's one of the many reasons I am looking forward to Vista. I've been a fan of applications th...&lt;br&gt;&lt;b&gt;Total views: &lt;i&gt;24,497&lt;/i&gt; - Posted on: 11-Jan-2006 &lt;/b&gt;&lt;br&gt;&lt;br&gt;
&lt;img src="/skins/ryanfarleyxpblue/images/icon-tip.gif" align="absmiddle"&gt; &lt;b&gt;&lt;A href="http://ryanfarley.com/blog/archive/2004/04/03/495.aspx"&gt;29. Retrieving database independent schema information&lt;/a&gt;&lt;/b&gt;&lt;br&gt;Something that I think is often overlooked in the .NET Framework is the cool stuff you can get at using OleDbSchemaGuid to retrieve database schema information. I just thought of this again earlier today when I was reviewing a C# database application where...&lt;br&gt;&lt;b&gt;Total views: &lt;i&gt;21,989&lt;/i&gt; - Posted on: 3-Apr-2004 &lt;/b&gt;&lt;br&gt;&lt;br&gt;
&lt;img src="/skins/ryanfarleyxpblue/images/icon-tip.gif" align="absmiddle"&gt; &lt;b&gt;&lt;A href="http://ryanfarley.com/blog/archive/2004/06/10/773.aspx"&gt;30. Creating Tracking Images for ASP.NET&lt;/a&gt;&lt;/b&gt;&lt;br&gt;Often with web applications you want to track traffic statistics to get a general idea of the number of visitors viewing a resource. Whether it be a web page, an RSS feed, an e-mail or whatever, you might want an inconspicuous way to determine that it has...&lt;br&gt;&lt;b&gt;Total views: &lt;i&gt;21,725&lt;/i&gt; - Posted on: 10-Jun-2004 &lt;/b&gt;&lt;/BLOCKQUOTE&gt;
&lt;/P&gt;
&lt;P&gt;Some of these are not as relevant now with .NET 2.0, so I guess I better get back on the bandwagon ;-)&lt;/P&gt;&lt;img src ="http://ryanfarley.com/blog/aggbug/22689.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Ryan Farley</dc:creator><title>Adding Meta Tags to the Head in ASP.NET 2.0</title><link>http://ryanfarley.com/blog/archive/2006/03/25/18992.aspx</link><pubDate>Sat, 25 Mar 2006 12:05:00 GMT</pubDate><guid>http://ryanfarley.com/blog/archive/2006/03/25/18992.aspx</guid><wfw:comment>http://ryanfarley.com/blog/comments/18992.aspx</wfw:comment><comments>http://ryanfarley.com/blog/archive/2006/03/25/18992.aspx#Feedback</comments><slash:comments>59</slash:comments><wfw:commentRss>http://ryanfarley.com/blog/comments/commentRss/18992.aspx</wfw:commentRss><trackback:ping>http://ryanfarley.com/blog/services/trackbacks/18992.aspx</trackback:ping><description>&lt;P&gt;After my last post on adding items to the page head in ASP.NET 2.0, &lt;A id=Comments.ascx_CommentList__ctl0_NameLink target=_blank&gt;Karthik Nataraaj&lt;/A&gt;&amp;nbsp;asked if there was a way to add meta tags as well. You are in luck Karthik. The HtmlMeta class is provided for just that. You can easily create a HtmlMeta object and add it to the Controls collection in the HtmlHead class exposed via Page.Header. Here's a few samples:&lt;/P&gt;
&lt;P&gt;&lt;PRE&gt;&lt;span style="color: Green; "&gt;// Render: &amp;lt;meta name="keywords" content="Some words listed here" /&amp;gt;
&lt;/span&gt;HtmlMeta meta &lt;span style="color: Navy; "&gt;=&lt;/span&gt; &lt;span style="color: Blue; "&gt;new&lt;/span&gt; HtmlMeta();
meta.Name &lt;span style="color: Navy; "&gt;=&lt;/span&gt; &lt;span style="color: #008080; "&gt;"keywords"&lt;/span&gt;;
meta.Content &lt;span style="color: Navy; "&gt;=&lt;/span&gt; &lt;span style="color: #008080; "&gt;"Some words listed here"&lt;/span&gt;;
&lt;span style="color: Blue; "&gt;this&lt;/span&gt;.Header.Controls.Add(meta);

&lt;span style="color: Green; "&gt;// Render: &amp;lt;meta name="robots" content="noindex" /&amp;gt;
&lt;/span&gt;meta &lt;span style="color: Navy; "&gt;=&lt;/span&gt; &lt;span style="color: Blue; "&gt;new&lt;/span&gt; HtmlMeta();
meta.Name &lt;span style="color: Navy; "&gt;=&lt;/span&gt; &lt;span style="color: #008080; "&gt;"robots"&lt;/span&gt;;
meta.Content &lt;span style="color: Navy; "&gt;=&lt;/span&gt; &lt;span style="color: #008080; "&gt;"noindex"&lt;/span&gt;;
&lt;span style="color: Blue; "&gt;this&lt;/span&gt;.Header.Controls.Add(meta);

&lt;span style="color: Green; "&gt;// Render: &amp;lt;meta name="date" content="2006-03-25" scheme="YYYY-MM-DD" /&amp;gt;
&lt;/span&gt;meta &lt;span style="color: Navy; "&gt;=&lt;/span&gt; &lt;span style="color: Blue; "&gt;new&lt;/span&gt; HtmlMeta();
meta.Name &lt;span style="color: Navy; "&gt;=&lt;/span&gt; &lt;span style="color: #008080; "&gt;"date"&lt;/span&gt;;
meta.Content &lt;span style="color: Navy; "&gt;=&lt;/span&gt; DateTime.Now.ToString(&lt;span style="color: #008080; "&gt;"yyyy-MM-dd"&lt;/span&gt;);
meta.Scheme &lt;span style="color: Navy; "&gt;=&lt;/span&gt; &lt;span style="color: #008080; "&gt;"YYYY-MM-DD"&lt;/span&gt;;
&lt;span style="color: Blue; "&gt;this&lt;/span&gt;.Header.Controls.Add(meta);&lt;/PRE&gt;&lt;/P&gt;&lt;img src ="http://ryanfarley.com/blog/aggbug/18992.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Ryan Farley</dc:creator><title>Easy Header Access in ASP.NET 2.0</title><link>http://ryanfarley.com/blog/archive/2006/03/24/18930.aspx</link><pubDate>Fri, 24 Mar 2006 13:28:00 GMT</pubDate><guid>http://ryanfarley.com/blog/archive/2006/03/24/18930.aspx</guid><wfw:comment>http://ryanfarley.com/blog/comments/18930.aspx</wfw:comment><comments>http://ryanfarley.com/blog/archive/2006/03/24/18930.aspx#Feedback</comments><slash:comments>14</slash:comments><wfw:commentRss>http://ryanfarley.com/blog/comments/commentRss/18930.aspx</wfw:commentRss><trackback:ping>http://ryanfarley.com/blog/services/trackbacks/18930.aspx</trackback:ping><description>&lt;P&gt;I am easy to please when it comes to small and simple things that make my life as a developer easier. For example, I came accross something I had not noticed before in ASP.NET while reading &lt;A href="http://dbvt.com/blog/archive/2006/03/22/4123.aspx"&gt;a post from Dave Burke&lt;/A&gt;. The HtmlHead class exposed by the Page class as Page.Header. I love this. It makes it so easy to get to, and manipulate the header attributes for a page. A simple act of changing the page's title, style, etc before was a pain. Now it's just setting&amp;nbsp;a few properties.&lt;/P&gt;
&lt;P&gt;To change a page's title:&lt;/P&gt;
&lt;P&gt;&lt;PRE&gt;&lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;.Header.Title &lt;SPAN style="COLOR: navy"&gt;=&lt;/SPAN&gt; &lt;SPAN style="COLOR: #008080"&gt;"This is the new page title."&lt;/SPAN&gt;;&lt;/PRE&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;To add a style attribute for the page:&lt;/P&gt;
&lt;P&gt;&lt;PRE&gt;Style style &lt;SPAN style="COLOR: navy"&gt;=&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; Style();
style.ForeColor &lt;SPAN style="COLOR: navy"&gt;=&lt;/SPAN&gt; System.Drawing.Color.Navy;
style.BackColor &lt;SPAN style="COLOR: navy"&gt;=&lt;/SPAN&gt; System.Drawing.Color.LightGray;

&lt;SPAN style="COLOR: green"&gt;// Add the style to the header for the body of the page
&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;.Header.StyleSheet.CreateStyleRule(style, &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;, &lt;SPAN style="COLOR: #008080"&gt;"body"&lt;/SPAN&gt;);&lt;/PRE&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;To&amp;nbsp;add a stylesheet to :&lt;/P&gt;
&lt;P&gt;&lt;PRE&gt;HtmlLink link &lt;SPAN style="COLOR: navy"&gt;=&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; HtmlLink();
link.Attributes.Add(&lt;SPAN style="COLOR: #008080"&gt;"type"&lt;/SPAN&gt;, &lt;SPAN style="COLOR: #008080"&gt;"text/css"&lt;/SPAN&gt;);
link.Attributes.Add(&lt;SPAN style="COLOR: #008080"&gt;"rel"&lt;/SPAN&gt;, &lt;SPAN style="COLOR: #008080"&gt;"stylesheet"&lt;/SPAN&gt;);
link.Attributes.Add(&lt;SPAN style="COLOR: #008080"&gt;"href"&lt;/SPAN&gt;, &lt;SPAN style="COLOR: #008080"&gt;"~/newstyle.css"&lt;/SPAN&gt;);
&lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;.Header.Controls.Add(link);&lt;/PRE&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;Simple and elegant. I guess I can finally get rid of my helper classes to do all of that and keep things simpler. Sad that I had not noticed that was there in 2.0 earlier.&lt;/P&gt;&lt;img src ="http://ryanfarley.com/blog/aggbug/18930.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Ryan Farley</dc:creator><title>Web 2.0 Hype</title><link>http://ryanfarley.com/blog/archive/2006/02/28/17099.aspx</link><pubDate>Tue, 28 Feb 2006 10:31:00 GMT</pubDate><guid>http://ryanfarley.com/blog/archive/2006/02/28/17099.aspx</guid><wfw:comment>http://ryanfarley.com/blog/comments/17099.aspx</wfw:comment><comments>http://ryanfarley.com/blog/archive/2006/02/28/17099.aspx#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://ryanfarley.com/blog/comments/commentRss/17099.aspx</wfw:commentRss><trackback:ping>http://ryanfarley.com/blog/services/trackbacks/17099.aspx</trackback:ping><description>&lt;P&gt;There's something about the Web 2.0 buzz that's forced itself into the fore front over the last year that's never quite sat right with me. Milan Negovan recently made a &lt;A href="http://aspnetresources.com/blog/con_2_0.aspx" target=_blank&gt;post titled &amp;#8220;Con 2.0&amp;#8221;&lt;/A&gt; which summarized my own feelings on the subject perfectly (which Milan seems to do quite often). The problem with the hype around Web 2.0 is that there seems to be a real push to solve a problem I don't have. Sure the bells and whistles are cool and have a lot of &amp;#8220;wow-factor&amp;#8221; to them, but I seldom come accross a new feature that carries the Web 2.0 banner that provides me with any real, or new, value. Yet somehow, VC's seem to be itching to dump in funding.&lt;/P&gt;
&lt;P&gt;Do I really need a shiny new web toy to give me more XMLHttpRequest driven features I really don't need? &lt;A href="http://www.russellbeattie.com/notebook/1008838.html" target=_blank&gt;Russell Beattie really hits the nail on the head&lt;/A&gt; when in comes to Web 2.0 IMO:&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;&lt;EM&gt;Let&amp;#8217;s go back in history (2004) to the conception of the term &amp;#8220;Web 2.0? itself - the shining examples then were Amazon.com and eBay. They didn&amp;#8217;t just open up their back ends for developers to use via XML APIs over the web, they made A LOT OF MONEY doing it. That was the key: Every Amazon.com API transaction ends up with a purchase from their site. Every eBay upload ends up with a listing or a purchase or something as well. &lt;STRONG&gt;It was clear, Web 2.0 was about platforms, open APIs enabling real business, not the overhyped traffic generators of the late 90s which did nothing but waste a lot of investor&amp;#8217;s money.&lt;/STRONG&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;But since then Web 2.0 has just mutated. Somehow the focus flipped from &amp;#8220;making&amp;#8221; platforms to &amp;#8220;using&amp;#8221; them. Ajax came along, Social Software and Tagging took over, RSS alone was considered an API, a few companies got bought, mobile was forgotten about completely and somewhere along the way the whole part about the &amp;#8220;business&amp;#8221; stuff went totally out the window. Hey, I&amp;#8217;m all about creating useful and innovative software for your users, but if you can&amp;#8217;t make a profit, you won&amp;#8217;t be around long enough to make any sort of difference, and will probably cause more harm than good.&lt;/EM&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;
&lt;DIV class=link&gt;&lt;A href="http://www.russellbeattie.com/notebook/1008838.html" target=_blank&gt;Check out Russell Beattie's article WTF 2.0&lt;/A&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;It's not like anything that helped coined the term Web 2.0 is anything new. Any real techie out there knows there's no real innovation, just the same stuff used in different ways. But I don't need that. What we need is something that revolutionized the web when it comes to getting real value for businesses and consumers. Make&amp;nbsp;the internet&amp;nbsp;more useful and give me more reasons to never leave my house ;-). I just don't think that some fancy client-side scripting is going to do that for me. I just don't get it.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.from9till2.com/PermaLink.aspx?guid=e59390c9-d885-436b-a6b8-4891c36f4d86" target=_blank&gt;David Ing posted a funny bit of code&lt;/A&gt; to sum up his thoughts on the subject. Nice.&lt;/P&gt;&lt;img src ="http://ryanfarley.com/blog/aggbug/17099.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Ryan Farley</dc:creator><title>SMTP Relaying 101</title><link>http://ryanfarley.com/blog/archive/2006/01/09/14877.aspx</link><pubDate>Mon, 09 Jan 2006 08:48:00 GMT</pubDate><guid>http://ryanfarley.com/blog/archive/2006/01/09/14877.aspx</guid><wfw:comment>http://ryanfarley.com/blog/comments/14877.aspx</wfw:comment><comments>http://ryanfarley.com/blog/archive/2006/01/09/14877.aspx#Feedback</comments><slash:comments>14</slash:comments><wfw:commentRss>http://ryanfarley.com/blog/comments/commentRss/14877.aspx</wfw:commentRss><trackback:ping>http://ryanfarley.com/blog/services/trackbacks/14877.aspx</trackback:ping><description>&lt;P&gt;I was speaking to a friend the other day about relaying e-mails via a local SMTP server. There was some problem with some code and the e-mails were not going out. In cases like this one of the first things I like to do (especially when you don't get to access the SMTP server directly, but you're relying on some other IT person to set up the relaying permissions correctly) is to manaully connect to the SMTP server and test sending out an e-mail or two.&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;&amp;lt;sidetrack&amp;gt;&lt;/CODE&gt;The truth is that command-line stuff now days are treated as old-school. Back in the day I grew up in a terminal window. Text and commands are &lt;A href="http://ryanfarley.com/blog/archive/2004/03/25/470.aspx"&gt;pure love for me&lt;/A&gt;. Don't get me wrong, I &lt;EM&gt;love&lt;/EM&gt; the advances made and where we are today as far as the whole computing user-experience goes. I'm not one of those guys that rant about how things were better back in the "good ol' days" or anything. But I am not about to abandon roots and forget how to actually do things via the command line.&lt;CODE&gt;&amp;lt;/sidetrack&amp;gt;&lt;/CODE&gt; Anyway, something that is useful to know how to do for any developer that ever writes code to send out e-mails is to know how to manually relay mail through an SMTP server.&lt;/P&gt;
&lt;P&gt;To make the connection, you'll need to fire up our command-line friend CMD (If you don't know how to start a command window then you're reading the wrong blog, move along). We'll do two things to check that we can sucessfully relay from your current machine to your SMTP server (which might also be your current machine or elsewhere - we're just trying to test that the server will accept relaying from your IP address/machine). First is to check for connectivity between your machine and the server to make sure you're not blocked somewhere along the line. Second is to actually relay an e-mail via the server. &lt;/P&gt;
&lt;P&gt;&lt;br&gt;&lt;STRONG&gt;Checking Connectivity with the SMTP Server&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;An easy way to check connectivity with the server (remember we're staying command-line here) is to use the PORTQRY command-line tool (&lt;A href="http://support.microsoft.com/?kbid=310099" target=_blank&gt;A free download from Microsoft&lt;/A&gt;). You can use portqry to check to make sure that TCP traffic can make it from your machine to the SMTP port 25 on the server. To do so run the following command:&lt;/P&gt;
&lt;P&gt;&lt;PRE&gt;portqry -n MYSERVER -p tcp -e 25&lt;/PRE&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;This will query the server to check for connectivity on port/endpoint 25 using the TCP protocol. What you want to hear is "LISTENING". You'll get back 1 of 3 results; listening (A process is listening on the port on the server), not listening (No process is listening on the target port on the server), or filtered (portqry did not receive a response from the port. A process may or may not be listening on the port).&lt;/P&gt;
&lt;P&gt;&lt;br&gt;&lt;STRONG&gt;Relaying an E-mail via SMTP&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Now on to the fun stuff. Sending the e-mail. On the command-line, open a telnet session.&lt;/P&gt;
&lt;P&gt;&lt;PRE&gt;telnet MYSERVER 25&lt;/PRE&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;Just a tip, if you don't see what you type then you need to turn on the local echo by typing (&lt;CODE&gt;set local_echo&lt;/CODE&gt; or &lt;CODE&gt;set localecho&lt;/CODE&gt; on XP machines). Anyway, make sure you specify port 25 (notice the 25 after the server name).&lt;/P&gt;
&lt;P&gt;From here, I'm going to skip the detailed explanations and get to the point. After all, if you're really that interested &lt;A href="ftp://ftp.isi.edu/in-notes/rfc821.txt" target=_blank&gt;read the spec&lt;/A&gt;. Basically, there are 4 commands you'll need, &lt;STRONG&gt;EHLO&lt;/STRONG&gt; or &lt;STRONG&gt;HELO&lt;/STRONG&gt; (used by the sending host to identify itself), &lt;STRONG&gt;MAIL FROM&lt;/STRONG&gt; (to specify who the mail is from), &lt;STRONG&gt;RCPT TO&lt;/STRONG&gt; (to indicate the recipient of the e-mail - this can be repeated multiple times for multiple recipients), and &lt;STRONG&gt;DATA&lt;/STRONG&gt; (for the actual text body of the e-mail - you can also specify subject here). One thing to note, whether to use EHLO or HELO for the handshake depends on the capabilities of the SMTP server. All SMTP servers will respond to HELO, older servers might not understand EHLO. The difference between the two is that basically the server's response to EHLO will return additional info about the server's abilities. Also, on the subject of handshakes, to be RFC 2821 compliant, the system name your computer transmits in the EHLO handshake must be identical to the DNS name of the IP address that your computer is currently attached to.&lt;/P&gt;
&lt;P&gt;Here's a sample (lines typed by you are in blue, the gray lines are server responses):&lt;/P&gt;
&lt;P&gt;&lt;PRE&gt;&lt;FONT color=#202020&gt;220 deathstar.SUPERFREAK.local Microsoft ESMTP MAIL Service, Version: 6.0.2600.2&lt;/FONT&gt;
&lt;FONT color=#202020&gt;180 ready at Fri, 6 Jan 2006 16:59:58 -0700&lt;/FONT&gt;
&lt;FONT color=#000080&gt;HELO localhost&lt;/FONT&gt;
&lt;FONT color=#202020&gt;250 deathstar.SUPERFREAK.local Hello [127.0.0.1]&lt;/FONT&gt;
&lt;FONT color=#000080&gt;MAIL FROM: &lt;/FONT&gt;&lt;FONT color=#000080&gt;bgates@microsoft.com&lt;/FONT&gt;
&lt;FONT color=#202020&gt;250 2.1.0 &lt;/FONT&gt;&lt;FONT color=#202020&gt;bgates@microsoft.com....Sender&lt;/FONT&gt;&lt;FONT color=#202020&gt; OK&lt;/FONT&gt;
&lt;FONT color=#000080&gt;RCPT TO: &lt;/FONT&gt;&lt;FONT color=#000080&gt;someone@mail.com&lt;/FONT&gt;
&lt;FONT color=#202020&gt;250 2.1.5 &lt;/FONT&gt;&lt;FONT color=#202020&gt;Administrator@deathstar.SUPERFREAK.local&lt;/FONT&gt;
&lt;FONT color=#000080&gt;DATA&lt;/FONT&gt;
&lt;FONT color=#202020&gt;354 Start mail input; end with &amp;lt;CRLF&amp;gt;.&amp;lt;CRLF&amp;gt;&lt;/FONT&gt;
&lt;FONT color=#000080&gt;SUBJECT: This is a test.
Hello, this is just a test.&lt;BR&gt;How are things?&lt;/FONT&gt;
&lt;FONT color=#000080&gt;Bye,
-Ryan
.&lt;/FONT&gt;
&lt;FONT color=#202020&gt;250 2.6.0 &amp;lt;&lt;/FONT&gt;&lt;FONT color=#202020&gt;DEATHSTARoqwWADykQv00000001@deathstar.SUPERFREAK.local&lt;/FONT&gt;&lt;FONT color=#202020&gt;&amp;gt; Queued mail for delivery&lt;/FONT&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;The important thing to note here is the single "." (period) on the last line, followed by a CRLF. This is what tells the server that you're done with your text and to queue for delivery. If the server gives you the following message after typing the &lt;CODE&gt;RCPT TO&lt;/CODE&gt; line:&lt;/P&gt;
&lt;P&gt;&lt;PRE&gt;RCPT TO: someone@mail.com
&lt;FONT color=#ff0000&gt;550 5.7.1 Unable to relay for someone@mail.com&lt;/FONT&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;Then that means that you're not allowed to relay from the machine you are on via the connected SMTP server. Now you can go back to the IT person to let them know that he has not opened up relaying from the machine (IP Address) you're using.&lt;/P&gt;
&lt;P&gt;
&lt;DIV class=tip&gt;Tip: &lt;STRONG&gt;never&lt;/STRONG&gt; open relaying on an SMTP server from everyone. If you must relay on a server then only open relaying from the specific IP address only.&lt;/DIV&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;Also, I tend to only use anonymous relaying if it is a specific requirement or need. When possible, always use proper authentication to connect as a user on the server (See &lt;A href="http://systemwebmail.com/faq/3.8.aspx" target=_blank&gt;how do I authenticate to send an e-mail&lt;/A&gt; for details).&lt;/P&gt;&lt;img src ="http://ryanfarley.com/blog/aggbug/14877.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Ryan Farley</dc:creator><title>ASP.NET 1.1 to ASP.NET 2.0 - The Good, the Bad, the Ugly</title><link>http://ryanfarley.com/blog/archive/2005/12/05/13455.aspx</link><pubDate>Mon, 05 Dec 2005 15:04:00 GMT</pubDate><guid>http://ryanfarley.com/blog/archive/2005/12/05/13455.aspx</guid><wfw:comment>http://ryanfarley.com/blog/comments/13455.aspx</wfw:comment><comments>http://ryanfarley.com/blog/archive/2005/12/05/13455.aspx#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://ryanfarley.com/blog/comments/commentRss/13455.aspx</wfw:commentRss><trackback:ping>http://ryanfarley.com/blog/services/trackbacks/13455.aspx</trackback:ping><description>&lt;P&gt;Something that's been one of the most interesting reads for me lately has been&amp;nbsp;&lt;A href="http://dbvt.com/blog/default.aspx"&gt;Dave Burke&lt;/A&gt;'s set of posts detailing his&amp;nbsp;war stories about migrating an ASP.NET 1.1 project to ASP.NET 2.0. Good stuff. &lt;A href="http://weblogs.asp.net/scottgu/"&gt;ScottGu&lt;/A&gt; even got involved and had Dave send him a sample project so he could offer advice and help determine what was causing the train to stall when leaving the migration station.&lt;/P&gt;
&lt;P&gt;So let's see. Where to start?&lt;/P&gt;
&lt;DIV class=link&gt;Start with &lt;A href="http://dbvt.com/blog/archive/2005/12/01/3606.aspx"&gt;Got big ASP.NET 1.1 to 2.0 Migration plans? FUHGETABOUTIT!&lt;/A&gt;&lt;/DIV&gt;
&lt;P&gt;And continue on with&lt;/P&gt;
&lt;DIV class=link&gt;&lt;A href="http://dbvt.com/blog/archive/2005/12/02/3615.aspx"&gt;Sharing the migration pain&lt;/A&gt;&lt;BR&gt;&lt;A href="http://dbvt.com/blog/archive/2005/12/03/3616.aspx"&gt;Read the ASP.NET Migration Forum with a box of Kleenex handy&lt;/A&gt;&lt;BR&gt;&lt;A href="http://dbvt.com/blog/archive/2005/12/03/3621.aspx"&gt;The particulars on my ASP.NET 1.1-to-2.0 project for ScottGu&lt;/A&gt; &lt;/DIV&gt;
&lt;P&gt;And then ScottGu's response&lt;/P&gt;
&lt;DIV class=link&gt;&lt;A href="http://dbvt.com/blog/archive/2005/12/05/3629.aspx"&gt;ScottGu Bits #1: Scott Delivers&lt;/A&gt;&lt;BR&gt;&lt;A href="http://dbvt.com/blog/archive/2005/12/05/3633.aspx"&gt;ScottGu Bits #2: VS2003 Project Changes to faciliate migration&lt;/A&gt;&lt;BR&gt;&lt;A href="http://dbvt.com/blog/archive/2005/12/05/3634.aspx"&gt;ScottGu Bits #3: Post-migration VS2005 project differences&lt;/A&gt;&lt;BR&gt;&lt;A href="http://dbvt.com/blog/archive/2005/12/05/3635.aspx"&gt;ScottGu Bits #4: VS2005 Abstract Stub Classes&lt;/A&gt;&lt;BR&gt;&lt;A href="http://dbvt.com/blog/archive/2005/12/05/3637.aspx"&gt;ScottGu Bits #5: The Mystery of the Single Stub&lt;/A&gt;&lt;BR&gt;&lt;A href="http://dbvt.com/blog/archive/2005/12/05/3639.aspx"&gt;ScottGu Bits #6: Remaining ScottGu Comments&lt;/A&gt;&lt;/DIV&gt;
&lt;P&gt;Wow, what a link post this one turned out to&amp;nbsp;be&amp;nbsp;;-)&amp;nbsp;Thanks for sharing Dave.&lt;/P&gt;&lt;img src ="http://ryanfarley.com/blog/aggbug/13455.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Ryan Farley</dc:creator><title>Rendering Size (and other things) Correctly in FireFox</title><link>http://ryanfarley.com/blog/archive/2005/09/06/9208.aspx</link><pubDate>Tue, 06 Sep 2005 16:45:00 GMT</pubDate><guid>http://ryanfarley.com/blog/archive/2005/09/06/9208.aspx</guid><wfw:comment>http://ryanfarley.com/blog/comments/9208.aspx</wfw:comment><comments>http://ryanfarley.com/blog/archive/2005/09/06/9208.aspx#Feedback</comments><slash:comments>35</slash:comments><wfw:commentRss>http://ryanfarley.com/blog/comments/commentRss/9208.aspx</wfw:commentRss><trackback:ping>http://ryanfarley.com/blog/services/trackbacks/9208.aspx</trackback:ping><description>&lt;P&gt;One thing that I just can't stand, is when a web page I build looks different in FireFox than how it looks in IE. Well, who doesn't?! The thing that really sucks is that there are things build in to how ASP.NET works that will cause this to happen. So unless you're checking your pages in FireFox (and other browsers) than you can bet they'll render quite a bit differently than in IE.&lt;/P&gt;
&lt;P&gt;There's many things that will render differently in IE and FireFox, however, there are&amp;nbsp;a few&amp;nbsp;things that annoy me. First, is the &amp;#8220;Width&amp;#8221; property&amp;nbsp;for server controls such as TextBox, Label, Button, etc. Try adding a TextBox to an ASP.NET page. Set it's Width property&amp;nbsp;to something (&amp;#8220;125&amp;#8220;, &amp;#8220;125px&amp;#8220;, &amp;#8220;80%&amp;#8220;, etc -&amp;nbsp;anything). Now take a look at the page in IE and also in FireFox. Notice something? That's right. You see the TextBox sized to the specified width in IE, but not in FireFox. &lt;/P&gt;
&lt;P align=center&gt;&lt;IMG alt="TextBox with Width property set in Internet Explorer" src="http://files.farleyzone.com/images/ie_textboxsize.jpg" border=0&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;IMG alt="TextBox with Width property set in FireFox" src="http://files.farleyzone.com/images/firefox_textboxsize.jpg" border=0&gt; &lt;/P&gt;
&lt;P&gt;Notice how the TextBoxes and Button properly reflect the specified Width in IE, but they apprear to be ignored in FireFox? Here's why this happens. If you look at the source of the page in each browser, you'll notice that the TextBox is rendered as follows in IE:&lt;/P&gt;
&lt;P&gt;&lt;PRE&gt;&amp;lt;input name=&lt;SPAN style="COLOR: #008080"&gt;"Textbox1"&lt;/SPAN&gt; type=&lt;SPAN style="COLOR: #008080"&gt;"text"&lt;/SPAN&gt; id=&lt;SPAN style="COLOR: #008080"&gt;"Textbox1"&lt;/SPAN&gt; style=&lt;SPAN style="COLOR: #008080"&gt;"width:100%;"&lt;/SPAN&gt; &lt;SPAN style="COLOR: navy"&gt;/&lt;/SPAN&gt;&amp;gt;&lt;/PRE&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;Now look at the source in FireFox and you'll notice the TextBox is rendered differently:&lt;/P&gt;
&lt;P&gt;&lt;PRE&gt;&amp;lt;input name=&lt;SPAN style="COLOR: #008080"&gt;"Textbox1"&lt;/SPAN&gt; type=&lt;SPAN style="COLOR: #008080"&gt;"text"&lt;/SPAN&gt; id=&lt;SPAN style="COLOR: #008080"&gt;"Textbox1"&lt;/SPAN&gt; &lt;SPAN style="COLOR: navy"&gt;/&lt;/SPAN&gt;&amp;gt;&lt;/PRE&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;Obviously, the reason why we don't see the TextBoxes with the specified width in FireFox is because they are rendered &lt;STRONG&gt;without&lt;/STRONG&gt; the width set at all. That just sucks. The reason why the TextBox's Width property is rendered as &lt;FONT face="Courier New"&gt;style=&amp;#8221;width:125px;&amp;#8221;&lt;/FONT&gt; in IE but not in FireFox is because FireFox is seen as a down-level browser in ASP.NET 1.x so it is rendered without the style attribute. Just lame. Well, you have a couple of routes to fix this problem. First route you can take is to &lt;STRONG&gt;not &lt;/STRONG&gt;use the Width property. You can either set the width in the style yourself, or use the Columns property instead. If you set the Columns property to something like &lt;FONT face="Courier New"&gt;Columns=30&lt;/FONT&gt;, it will render as &lt;FONT face="Courier New"&gt;Size=30&lt;/FONT&gt; and all will be well with both IE and FireFox. However, the Columns property is less flexible (con't set a percentage etc), so you might just want to set the Width in the style, such as &lt;FONT face="Courier New"&gt;style=&amp;#8221;width:100%;&amp;#8221;&lt;/FONT&gt;.&lt;/P&gt;
&lt;P&gt;This is all fine a great, but we're really only fixing the manifestation of the problem and not the problem itself and that is no good. A better way to fix the problem is to force ASP.NET to recognize FireFox as an up-level browser that supports things like style, etc so that&amp;nbsp;controls will automagically&amp;nbsp;render themselves properly as they do in IE. To do this, we can either modify the web.config file for the web page or modify the machine.config file so that the change is recognized in all sites/pages hosted on that machine. By modifying/adding the &lt;FONT face="Courier New"&gt;browserCaps&lt;/FONT&gt; section of the config file you can add an expression to match&amp;nbsp;the &lt;FONT face="Courier New"&gt;user-agent&lt;/FONT&gt; of&amp;nbsp;mozilla/gecko based browsers, such as FireFox, to properly identify that browser as an up-level browser. Basically the &lt;SPAN class=codeintext&gt;&lt;FONT face="Courier New"&gt;System.Web.HttpBrowserCapabilities&lt;/FONT&gt; class reads the config information, matches on the &lt;FONT face="Courier New"&gt;user-agent&lt;/FONT&gt; and then decides how to render thigns based on what it knows about the browser (or doesn't know about the browser&amp;nbsp;because it didn't match on the user-agent and assumes down-level). &lt;/SPAN&gt;You can see more about what to modify in the &lt;FONT face="Courier New"&gt;browserCaps&lt;/FONT&gt; of the config file, as well as download an already modified config file from slingfive.com.&lt;/P&gt;
&lt;P&gt;
&lt;DIV class=link&gt;&lt;A href="http://slingfive.com/pages/code/browserCaps/" target=_blank&gt;BrowserCaps and other Browser Testing/Detection Resources - slingfive.com&lt;/A&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;Basically, adding the appropriate sections to your &lt;FONT face="Courier New"&gt;browserCaps&lt;/FONT&gt; section of your config file, FireFox will be detected and the &lt;FONT face="Courier New"&gt;style=&amp;#8221;width:125px;&amp;#8221;&lt;/FONT&gt; will be rendered with the TextBox so all the sizes will be right. Unless you don't have access to the file system on the web server, I'd suggest just making the change to the machine.config file and be done with it, otherwise you'll just have to remember to add that to the web.config for any projects you do from then on. Since the machine.config isn't as deployable as the web.config, you might consider leaving it in the web.config for any applications that might be deployed to customers or as a commercial product.&lt;/P&gt;
&lt;P&gt;This change to the config file fixes a lot of things with how pages are rendered for FireFox, such as how Panels are rendered. Add a panel on a page:&lt;/P&gt;
&lt;P&gt;&lt;PRE&gt;&amp;lt;asp:Panel id=&lt;SPAN style="COLOR: #008080"&gt;"Panel1"&lt;/SPAN&gt; runat=&lt;SPAN style="COLOR: #008080"&gt;"server"&lt;/SPAN&gt;&amp;gt;ASP.NET Panel&amp;lt;/asp:Panel&amp;gt;&lt;/PRE&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;You'll notice in IE, it is rendered as follows:&lt;/P&gt;
&lt;P&gt;&lt;PRE&gt;&amp;lt;div id=&lt;SPAN style="COLOR: #008080"&gt;"Panel1"&lt;/SPAN&gt;&amp;gt;ASP.NET Panel&amp;lt;/div&amp;gt;&lt;/PRE&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;In FireFox, the same panel will be rendered as a table:&lt;/P&gt;
&lt;P&gt;&lt;PRE&gt;&amp;lt;table id=&lt;SPAN style="COLOR: #008080"&gt;"Panel1"&lt;/SPAN&gt; cellpadding=&lt;SPAN style="COLOR: #008080"&gt;"0"&lt;/SPAN&gt; cellspacing=&lt;SPAN style="COLOR: #008080"&gt;"0"&lt;/SPAN&gt; border=&lt;SPAN style="COLOR: #008080"&gt;"0"&lt;/SPAN&gt; width=&lt;SPAN style="COLOR: #008080"&gt;"100%"&lt;/SPAN&gt;&amp;gt;
    &amp;lt;tr&amp;gt;
        &amp;lt;td&amp;gt;ASP.NET Panel&amp;lt;/td&amp;gt;
    &amp;lt;/tr&amp;gt;
&amp;lt;/table&amp;gt;&lt;/PRE&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;This might end up looking right, but it also might not. Either way, you don't need/want more tables in your rendered HTML slowing down the page and increasing to the size of thigns. This problem, and many others, are also fixed by modifying the &lt;FONT face="Courier New"&gt;browserCaps&lt;/FONT&gt; section of your config file. &lt;/P&gt;
&lt;P&gt;Modifying the config file to recognize FireFox as an up-level browser won't fix all your problems, but it will fix quite a few things that should just work right out of the box.&lt;/P&gt;&lt;img src ="http://ryanfarley.com/blog/aggbug/9208.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Ryan Farley</dc:creator><title>Unable to Start Debugging on the Web Server</title><link>http://ryanfarley.com/blog/archive/2005/08/23/8540.aspx</link><pubDate>Tue, 23 Aug 2005 09:36:00 GMT</pubDate><guid>http://ryanfarley.com/blog/archive/2005/08/23/8540.aspx</guid><wfw:comment>http://ryanfarley.com/blog/comments/8540.aspx</wfw:comment><comments>http://ryanfarley.com/blog/archive/2005/08/23/8540.aspx#Feedback</comments><slash:comments>275</slash:comments><wfw:commentRss>http://ryanfarley.com/blog/comments/commentRss/8540.aspx</wfw:commentRss><trackback:ping>http://ryanfarley.com/blog/services/trackbacks/8540.aspx</trackback:ping><description>&lt;P&gt;I hate that, and it seems that every time I (or a co-worker)&amp;nbsp;gets&amp;nbsp;the error &amp;#8220;Unable to Start Debugging on the Web Server&amp;#8221;&amp;nbsp;on a machine when attempting to debug an ASP.NET project, I have to scramble to remember what to look at. Here's a few things that has worked for me to get things working so you can debug your ASP.NET project when/if you ever get this error:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Make sure that IIS is configured to use &lt;EM&gt;Integrated Windows Authentication&lt;/EM&gt;. Look for the checkbox on the Authentication Method dialog launched from the Directory Security tab of the site properties.&lt;/LI&gt;
&lt;LI&gt;Make sure that &lt;EM&gt;HTTP Keep Alives&lt;/EM&gt; are enabled. You'll find that checkbox on the Web Site tab of the properties dialog, in the connections section.&lt;/LI&gt;
&lt;LI&gt;This one is strange, but it seemed to do the trick for many out there, add &lt;I&gt;http://localhost&lt;/I&gt; to the trusted sites in Internet Explorer. To tell the truth,&amp;nbsp;this seems to be a fix for the symtoms, not actually fixing the problem itself, but if it works it works. BTW, you'll have to uncheck the &amp;#8220;Require server verification (https:) for all sites in this zone&amp;#8220; checkbox to add it as a trusted site.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Good luck.&lt;/P&gt;&lt;img src ="http://ryanfarley.com/blog/aggbug/8540.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Ryan Farley</dc:creator><title>Listing Recent Posts on your blog without any programming</title><link>http://ryanfarley.com/blog/archive/2005/08/15/8097.aspx</link><pubDate>Mon, 15 Aug 2005 21:15:00 GMT</pubDate><guid>http://ryanfarley.com/blog/archive/2005/08/15/8097.aspx</guid><wfw:comment>http://ryanfarley.com/blog/comments/8097.aspx</wfw:comment><comments>http://ryanfarley.com/blog/archive/2005/08/15/8097.aspx#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://ryanfarley.com/blog/comments/commentRss/8097.aspx</wfw:commentRss><trackback:ping>http://ryanfarley.com/blog/services/trackbacks/8097.aspx</trackback:ping><description>&lt;P&gt;If you visit my blog via a browser, you'll see that I added a &amp;#8220;Recent Posts&amp;#8221; section in the top left corner. This actually has some humor to it since &lt;A href="http://ryanfarley.com/blog/archive/2005/08/15/8095.aspx"&gt;I've been on a 82 day unplanned hiatus&lt;/A&gt;, so none of my posts are really &amp;#8220;recent&amp;#8221;. But, none the less, I wanted to share how I added that. I did absolutely no programming or changes to the blog controls. Just a few things to set up with NewsGator Online services and a single line to add to your blog (you can even add it in the &amp;#8220;news&amp;#8221; section if you use a hosted .Text or CommunityServer so you don't event need to touch anything on the server).&lt;/P&gt;
&lt;P&gt;So here are the steps to add your &amp;#8220;Recent Posts&amp;#8221; section to your blog:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Go to &lt;A href="http://www.newsgator.com/ngs/default.aspx" target=_blank&gt;NewsGator Online Services&lt;/A&gt; and register for a new standard/free account.&amp;nbsp;Your account will be active immediately so&amp;nbsp;sign-in to your account. 
&lt;LI&gt;Now we have to add your blog to the default&amp;nbsp;&amp;#8220;location&amp;#8220; for your account. Click the &amp;#8220;Add a Feed&amp;#8220; link, then select &amp;#8220;URL &amp;amp; Import&amp;#8220;. Here you can add the Uri for the rss feed for your blog. 
&lt;LI&gt;Now&amp;nbsp;go to &amp;#8220;Edit Locations&amp;#8220;, then click the link for &amp;#8220;Headlines&amp;#8220;. If you don't see a link for &amp;#8220;Edit Locations&amp;#8220; then click the link for &amp;#8220;Settings&amp;#8220; first. 
&lt;LI&gt;While in the Headlines area, check the box to &lt;EM&gt;enable headlines for this location&lt;/EM&gt;. Then edit the text in the text area to look something like this (You can modify this to look however you want. I added images in my list):&lt;BR&gt;&lt;BR&gt;&lt;PRE&gt;&amp;lt;p&amp;gt;&amp;lt;a title=$description$ href="$link$"&amp;gt;$title$&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;&lt;/PRE&gt;&lt;BR&gt;
&lt;LI&gt;Modify the number of posts to show in the headlines (this will limit how many items you want to show in the Recent Posts list). 
&lt;LI&gt;Before you save the changes, you'll see, in bold, right above the checkbox, a line that starts with &lt;STRONG&gt;&lt;FONT face="Courier New"&gt;script src=&lt;/FONT&gt;&lt;/STRONG&gt;. Copy this line then save the changes. 
&lt;LI&gt;All you need to do now is add the line you copied from the Headlines page to your blog. The line for my blog looks like this:&lt;BR&gt;&lt;BR&gt;&lt;PRE&gt;&amp;lt;script src="http://services.newsgator.com/ngws/headlines.aspx?uid=66566&amp;amp;amp;mid=1"&amp;gt;&amp;lt;/script&amp;gt;&lt;/PRE&gt;&lt;BR&gt;
&lt;LI&gt;You can modify the pages/controls for your blog to add it somewhere, or if your blog is hosted somewhere and you don't have access to the files, simply add it to the News section under the Configuration options in the Admin pages (For .Text or CommunityServer, I'm sure other blogging engines have something similar).&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;That's it. Thanks to NewsGator's free service, you can add that where ever you want. You could add some other feed to that as well if you wanted. If you already have a NewsGator account, then you'll want to create a new location and add you blog to that location. The point is that the headlines show for all feeds in that location, so you want to have a location with just your blog feed added to it. Have fun.&lt;/P&gt;&lt;img src ="http://ryanfarley.com/blog/aggbug/8097.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>