One of my colleagues installed one of our ASP.NET applications on a demo laptop recently and came to me yesterday since he couldn't get it to work. It didn't take a long time to figure out that he had forgot the Infragistics controls that we use, along with Adobe Acrobat, so I installed them and tested it using localhost. He came back a short while later claiming that while it was now running, it wasn't working correctly, since his entries kept getting ignored. I tested it again using localhost and it certainly worked for me -- so I assumed he was doing something wrong and asked him to try it again. This time he sent me a screen shot of what he was seeing, and I noticed that he was using the computer name instead of localhost to access it. That seems innocent enough, but I decided to try it and sure enough the session state kept getting lost when using the computer name, but not with localhost. I looked at all the settings for IIS and everything else I could think of but it just didn't make any sense, and I certainly couldn't find anything wrong. Finally, I looked through the posts in the ASP.NET Forums that are related to State Management, looking for anything about session getting lost. That's when I found this MS support link that states cookies, and thus session, will cease to function if computer names have an underscore! Yes, this particular computer name had an underscore in it, and of course localhost doesn't, and it all makes perfect sense now, although the solution isn't very pretty. Anyhow, I've never personally used underscores in my computer names, but I also never realized it was a potential problem, so beware.
Have you seen WilsonDotNet.com yet? Well, you should take a minute and check it out. I'm using some really cool technologies to put out a simple yet effective website. Take the design for a second. You want to get a jump on MasterPages in ASP.NET 2.0? They you should check out MasterPages in ASP.NET v1.* (http://ASPAlliance.com/PaulWilson/Articles/?id=14). Its not just very effective, allowing me to not have to worry about mixing content and design, but it is MasterPages. I converted my entire site from MasterPages v1.* to MasterPages v2.0 in about 1 minute.
Another cool thing I'm doing comes from my innovative use of localization. Did you know that my entire website comes from resource strings. I built a rock-solid localization framework that allows me to display all of my website content in multiple languages, it doesn't take any extra effort to make that content available to you.
Did you know that none of my web pages contain static styles or layouts. Every single web page allows the user to select the color and layout, using a framework called WilsonDotNet. This framework, and many controls that are included, has been available since 2002, so why wait for others with less to offer promised in 2004. I want this to be the fastest possible, and so it includes extremely efficient caching techniques for all localization.
One of my favorite parts of the site is the graphic image buttons. On all pages, that graphic comes from a DynamicImage control that creates localizable buttons in user-specified colors at run-time, again with efficient caching. I also have navigational SiteMap file, just like ASP.NET v2.0, except mine are available now using the exact same format, that works with menu and tree server controls, which again makes converting to v2.0 very easy. I also still have the only way to have multiple server forms in ASP.NET, which remains true in v2.0, and the full source code for the WilsonWebForm is also included.
A few more nifty things are already available too. I've made every bit of my source code available in C# on the site, and the best of it is also available in VB, to show exactly how these cool .NET controls make my user experience better. You see promises of cool stuff on some other websites frequently mentioned in these blogs, but its hard to beat just clicking "view source" to get the actual .NET code to see how its done.
Well, I'm done tooting my own horn for the first and only time here. Just thought I'd take a second and point out how great I am, so that maybe the next time you need a solution, you'll give me your business.
Note: All of the above post is actually true, but its actually meant to be a satirical comment on this post of Robert McLaws: http://weblogs.asp.net/rmclaws/posts/39365.aspx.
I've been wanting an online aggregator for a while, but so far I had not been to impressed. Until now that is. So far I'm rather impressed with BlogLines.com -- you can even view my public subscriptions. Why an online aggregator? I can easily access all the feeds I want from multiple computers, even public computers, without multiple aggregators running. I can also catch up on new subscriptions, since the past feeds are already in their database in most cases. I can also save my favorites in a private folder, again from any computer. My main gripe so far -- I haven't found a way to have all the various feeds sorted together.
I decided to download and install the ASP.NET Forums for DotNetAtlanta.com. I thought this would be a simple task, but it was not as simple as it should be. The download installed the web application, database, and source code locally just fine. However, those of us that use shared web hosts, like WebHost4Life, can't just run an exe to install our apps. Still, how hard can it be I figured -- just copy the web files and run the database scripts. I took my time with the database scripts, since I needed to make sure they didn't drop and try to recreate my database. I also needed to make sure they pointed to the correct database, instead of the default database name. Still, I got several errors that I didn't really understand the significance of at first. It turns out that the scripts assign dbo as the owner for the tables, but not for the views, stored procs, or user functions. This required a search for a script to fix this problem, one of which I know was posted here very recently. There were also two procs that required some changes (forums_GetAllForumGroupsForModeration, forums_GetForumsForModerationByForumGroupId).
Finally I had the Forums working on my site, but in testing it became apparent that the email functionality didn't work. This one was very tough to figure out, since a search in the Forums revealed other people having this problem with no solution. Sure, there were good suggestions that worked for many people, like change the smtpServer element in the web.config file, and change the sender email address in the database. But these suggestions did not fix my problems, nor did they obviously fix it for others, and yet that was all the forums had to offer. I created a test page with the same smtpServer and sender email address using the simplest code possible, and it worked, so the problem was with the Forums source code itself! I altered the source code to remove the try/catch around the send email method, and turned off the custom error setting so I could see what was going on. I got one of the strangest error messages I had ever seen that directed me to another site for a better description. The problem then became apparent -- the email RFCs prohibit line-feeds without carraige returns, and some smtp servers enforce this, including the qmail sender used by WebHost4Life. The problem was now easy to resolve by altering the Forums source code and recompiling.
So now I have working Forums on my site, but I was still lacking my standard header menu. Its just amazing to me that these projects available from Microsoft don't include MasterPages or some other page template technique. By the way, I was asked by someone why I wasn't using the Community Starter Kit -- because it sucks! Really, none of these samples for portals are based on flexible and maintainable architectures, and I have a pretty good one already. Anyhow, I did not want to change 40 individual pages, so I turned on tracing and found a pretty good pattern. All I had to do was create a base page class that looks for the HtmlForm in the AddParsedSubObject method, and then dynamically add a header and footer control appropriately. Very easy and worked like a charm, and its generic enough to be useful for probably many other ASP.NET sites out there too, so its posted here. I also tampered a little bit with the source code for Avatars, but that's definitely an extra to simplify things for me, and now my Forums work well.
Introducing DotNetAtlanta.com, now with Forums also. My vision for this site is to provide a single community site for all .NET developers in the Atlanta area. We have several excellent .NET user groups already, and this is not intended to compete with them in any way. Instead, this site aims to highlite each of these existing .NET user groups, while at the same time adding other things currently lacking. These forums are obviously one such missing element, so I've taken the Microsoft ASP.NET Forums and installed them here. I've also seen many people interested in the Who's Who of .NET Atlanta, so I'm trying to create a list of leaders, MVPs, and bloggers. There are many other possibilities still, like a list of developers and their resumes, and maybe even an aggregated blog feed, so please give me your suggestions. Also, feel free to volunteer if you have the time, desire, and ability to either give this site a better look, or to code some of these other features.
Has anyone else noticed that using the mouse to click in the scrollbar area now seems to advance or backup two pages instead of one? This is happening on all of my machines that have the latest MS patches that came out this last week -- really annoying behavior to say the least.
This blog (weblogs.asp.net) has an aggregate feed -- but many people are avoiding it due to a few of the top bloggers that seem to focus on quantity over quality. This hurts all the rest of us little posters, since very few people are going to both bother subscribing to all of us individually.
Atlanta User Groups are getting several .NET celebrities in the next month. First up is Rocky Lhotka, a long-time top VB author and speaker, next week, November 19 at 6:30pm, at the Atlanta VB Study Group. Then Alan Griver, a MS VB.NET PM, will give a preview of Whidbey (.NET v2.0) at the MS Internet Developer's Association on December 2 at 6:00pm. Finally, Jason Beres, an Ineta speaker and author, will be at the Atlanta DotNet User Group on December 15 at 6:00pm.
On a related note, I've decided to try to start a .NET Community site for Atlanta: DotNetAtlanta.com. The various User Groups are doing great jobs, but there's nothing that pulls them all together, nor is there anything that identifies the various leaders and bloggers and other contributors. The site that I threw together this week, after having lunch with Kirk, is really just to get us thinking -- so please send me your suggestions, both good and bad, and let me know what you want to see!
Right now all I have is upcoming events, user groups, and lists of leaders and bloggers. The leaders and bloggers should probably not be on the main page, but I've been amazed at how many people want to know Who's Who in Atlanta based on posts to my blog and from my experience going to one of the User Groups. Other possibilities include news (is that different from events), resources links (with job sites and trainers), and maybe a local forum for interaction as well.
So, send me your thoughts, and feel free to volunteer if you have the time and desire, since my GUI skills are certainly suspect. I really do want to make this work, since I enjoy knowing the people that I do know here in Atlanta, but I need to know what will make it work for others, since it should not just be a place for “leaders”. Something that would be cool, but I don't have time to do it, would be to provide an aggregate .NET Atlanta blog feed, in html and RSS -- any volunteers.
Andrew Conrad indicates that ObjectSpaces will not be slower afterall as was originally reported due to some misunderstandings. It will of course be 30% slower than using a DataReader, not a DataSet, but that's got to be expected, just like a DataSet is slower than a DataReader. It should, however, be very comparable to using a DataReader and creating your own custom objects, and probably faster than using DataSets. This is good news -- now they need to get support for Access and Oracle, or at least allow a provider-model so someone else can implement the support.