Subscribe: Paul Wilson's .NET Blog
Added By: Feedage Forager Feedage Grade B rated
Language: English
atlanta  book  code  email  linq sql  linq  net  new  news  problem  scott  small  sql  system  time  version  wpf 
Rate this Feed
Rate this feedRate this feedRate this feedRate this feedRate this feed
Rate this feed 1 starRate this feed 2 starRate this feed 3 starRate this feed 4 starRate this feed 5 star

Comments (0)

Feed Details and Statistics Feed Statistics
Preview: Paul Wilson's .NET Blog

Paul Wilson's .NET Blog

Ramblings from the Creator of


Help: WebResource.axd Not Serving for Some Users

Sun, 09 Aug 2009 17:15:00 GMT

I've got a bizarre situation where a call to webresource.axd for some users is failing -- and only some users. Everything is installed on the server, and as far as I can tell it is all setup correctly -- and this is demonstrated by 95% or more of the users not having any problem. But these particular users have this problem getting webresource.axd regardless of the computer, network, or browser -- other members on my team can take the same user credentials and repeat the problem, while other good users continue to work on all the same computers. We are able to consistently reproduce the problem as we have identified a commonality between these user accounts -- the length of their login email is between 27 and 30 characters inclusively. Of course that login email is no where used to pull webresource.axd to my knowledge, but it is maybe somehow part of the session authentication cookie -- and maybe that's why things are failing. But I do not know of anything else to look at as far as configuration and authentication goes to troubleshoot -- we do not have this problem in our QA environment, nor do we have this problem for existing users (just newly registered users). We are using BEA's Plumtree ALUI 6.5 portal, so its a very complex and particular environment that I wouldn't expect others to have -- but maybe someone else has experienced something similar or has a thought.


In Memoriam to My Nephew, Matthew O'Bryant

Fri, 26 Sep 2008 18:11:00 GMT

 My nephew, Matthew O'Bryant, was one of the two US military personnel that was killed in the terrorist bombing of the Pakistan Marriott last weekend.  He was a great kid (22 years old) and he will be missed very much by his wife, brother and sisters, parents, the rest of our family, and his many friends.


Scott Bellware in Alpharetta

Sun, 03 Aug 2008 23:23:00 GMT

Scott Bellware's working in Alpharetta for a few weeks.  Contact me if you're in Alpharetta and want to join us for lunch on Tuesday, August 5th.  So far Dave Ward is also joining us, but there's room for a few more.

Atlanta Code Camp 2008

Thu, 13 Mar 2008 01:51:00 GMT

From the Atlanta Code Camp site: 

At long last, we are happy to announce registration for the 4th annual Atlanta Code Camp is now open.

What: All day geek fest focusing on code and not marketing fluff.
When: Saturday, March, 29, 2008 All day (doors open at 7:30)
Cost: Free! (If you are not satisfied, we promise a full refund.)
Where: Devry University in Decatur - 250 North Arcadia Ave, Decatur, GA 30030 (view map)
Speakers and Agenda: Currently being finalized. Check the website over the next week to see the finalized version.

To attend the event, you must register at the following link so that we can make sure to have food to feed you. If you don't register, we can't guarantee that you will be eligible for food or swag.

During the Code Camp, lunch will be provided at no cost to you. After the event, we are planning on gathering in a local eatery to continue any discussions which we were not able to complete by our 5:30 pm end time. Location information will be made available at the event.

The Atlanta Code Camps have historically "sold out" extremely rapidly and we don't expect this time to be any different. Please register quickly to lock in your spot as we are capping registration and attendance due to facility limitations. If you miss the registration cap, contact to see if we can come to some other arrangement, otherwise you will have to wait until next year's event. Don't miss out.

We hope you can join us for this exciting and informative event.

Review of Excellent Book: Linq in Action

Thu, 13 Mar 2008 01:34:00 GMT

"LINQ in Action", published by Manning, is by far the best book available on Linq, both for those new to Linq and those already following it.  The authors, Fabrice Marguerie, Steve Eichert, and Jim Wooley, have done a fabulous job of explaining Linq from the basics to the advanced.  They even made it enjoyable to read, which makes it one of the best .Net books ever!

The authors' introductory chapter shows us right away that this book is different by presenting a perfect balance of the problem, the history, and the solution.  Linq is a huge subject, but the authors are up to it, and they quickly whet the readers appetite for all of Linq -- Objects, Sql, and Xml.  We then get a very thorough explanation of the new language enhancements that Linq relies on, but which the authors clearly show to have uses of their own.  The chapter on Linq's building blocks, covering sequences, query operators, query expressions, and expression trees, was especially instructive to me, even though I've followed Linq from the alpha days, so again I'm sure this book has something for everyone.  The book then covers Linq to Objects very thoroughly, including common scenarios and performance considerations that other books never consider.

The book then progresses to three chapters on Linq to Sql, which are of course my favorite since I'm really into O/R Mapping.  The authors cover not just the basics to get beginners up to speed, but they also cover far more advanced content than I was expecting.  For instance, they discuss not just the designer to setup mappings, but also the SqlMetal tool, and manual mappings using either attributes or xml.  They also discuss the various concurrency options, the entity life cycle, inheritance, and more.  The authors then give us three chapters on Linq to Xml, which again have something for everyone -- I especially like the chapter on common scenarios.  The book finishes with a very thorough chapter on extending Linq, with a Linq to Amazon example, and a chapter that ties it all together with a real-world example that was gradually put together during the course of the entire book.

The authors also provide additional support and material online, including a bonus chapter on Linq to Datasets.  There is also downloadable code in both C# and VB, although the book actually shows both languages in most cases, and always points out the differences when there are differences between them.

Disclaimer:  I personally know Jim and have seen him present on Linq multiple times, Steve was a user of my WilsonORMapper, even contributing to it, and I've known Fabrice in the online world for quite some time too -- but I did very much enjoy and learn even more from their most excellent book on Linq.


Do .NET 2.0 SP1 Binaries Fail Without SP1?

Thu, 14 Feb 2008 14:09:00 GMT

Do .net 2.0 service pack 1 compiled binaries fail when ran on machines without that service pack?  Developers automatically get force-fed .net 2.0 sp1 when we install VS 2008, which doesn't sound like it should be a big concern typically.  But what about the next time you compile an existing VS 2005 app and deploy on machines without sp1, which would of course be the case for most non-dev machines right now?  I believe I have found a case where this is indeed happening, at least that's the only explanation I can find so far, and it looks like there are a few others reporting things too -- but the details so far are sketchy at best.

I've got an existing .net 2.0 app (written in C#) that calls a 3rd party web service that has always ran just fine.  I needed to make a couple of small updates to my app which did not change anything related to the calling of this web service at all.  Everything works flawlessly on my development pc, which has service pack 1 for .net 2.0, but fails when deployed on my qa server, which does not have service pack 1.  Here are the exception details:

Error type = System.InvalidOperationException
Error Message: There is an error in XML document (5, 2).
Stacktrace:    at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)
   at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle)
   at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)
   at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
   at ...

I am able to confirm that the 3rd party does receive my call to this web service, and it is sending the expected response, which I have also confirmed with TcpTrace.  So the problem seems to be that the xml deserialization that is needed to parse the web service response is no longer working the same, and code compiled with sp1 cannot be executed without it.

Can anyone confirm this?  Are there any work-arounds, short of compiling without sp1 or deploying sp1?  By the way, I am in the process of setting up a virtual machine that will just have VS 2005 without sp1 to confirm this if no one else can, and assuming I can confirm this then I'll have to determine if I want to start requiring sp1.

Here's a couple related links, which may or may not be the same problem I'm experiencing:

New Job with McKesson and Other News

Fri, 21 Dec 2007 17:59:00 GMT

Its been a very long time since my last post, but here I am again at last.  I just started a new job with McKesson this week as an ASP.NET Architect, where I'll be working on internal tools to support sales and marketing.  McKesson is currently 18th on the Fortune 50 list, being the largest health-care company, and I'll be working in their Alpharetta, GA, office.  I'm very excited about this change, both for the short-run and long-term, and I'm calling this a birthday present to myself since I just turned 40.  I still believe Mimsware to be the best Atlanta-based consulting company, and I highly recommend them, but I decided I wanted a more permanent role.  And McKesson isn't just any company -- they are also big enough that I can make a career with them and still find opportunity for change if I desire.  Its also a pleasant drive for me, taking back-roads from Woodstock, GA, although its a big change for myself and my family to not work from home.

So that explains this post, but what have I been doing since the last one?  I suppose the easiest explanation is to simply say that I've been living!  My focus has very much been my family, and much less on being a tech guru, which was only a coincidence due to having lots of time a few years ago.  My wife Jenny is still cancer-free, and now reconstructive surgery is done, but earlier this year there was a tough time dealing with a reconstructive surgery that didn't heal which led to a much bigger surgery than expected.  But she's fine now and back at her job as a nurse in a cardiac cath lab.  Meanwhile, my kids are growing -- Tori is 10 and still enjoys dancing, while Zack is 9 and enjoys video games, and both stay busy with friends.  We also got a Wii, which is finally a game system we all can play together -- and I count it as real exercise in air-conditioning with no allergens!  I got Mario and Sonic Olympics for my birthday and even got a little sore.

So what about the latest MS technology and my own endeavors like my O/RM?  I never set out to spend time on forums or to create a popular O/R Mapper -- I simply had a lot of free time several years back that I used wisely.  I love learning new technology, and I like to build something real that is useful to myself as part of that process, which is how it all started out.  I then discovered that others also found things I did very useful, which encouraged me to do even more, but then my O/RM took on a life of its own.  I found that I was no longer just learning or making something for myself, instead I was adding features for others and doing a lot of support also.  So Brian DeMarzo has taken my O/RM open source, and I'm just going to once again play with the latest MS stuff, like Linq to Sql and MVC for ASP.NET.  I may yet build something I think is useful enough to share with others, or at least learn enough for a new post, but if I don't then that's OK too.

Atlanta .NET Developer User Group Meeting

Mon, 07 May 2007 00:50:00 GMT

Several Atlanta area user groups have teamed up to meet on a single night with multiple tracks -- and the next meeting is Monday, May 7th, 2007, at 6:00pm in the Microsoft Alpharetta office.  Shawn Wildermuth will be giving the combined short talk, and then the group will split into several tracks, featuring Mike Culver, Jim Wooley, and maybe more.  Get more details on the Cutting Edge site.

Great News: Only One O/RM Shipping in Orcas

Sun, 29 Apr 2007 23:25:00 GMT

I almost can't believe the great news that came from MS today.  That's right, the ADO.NET Entity Framework has been delayed !  I bet most of you think I'm being sarcastic, but I am serious.  I've got at least three reasons why this is good news to me.

First, this gives Linq to Sql a better opportunity to thrive.  Linq to Sql is the "simpler" OR/M that's looking good enough for the vast majority of cases, while ADO.NET EF is far more complex -- and yet most gurus only wanted to talk about the EF.
Next, since ADO.NET EF is so complicated, it absolutely must have a great designer ship concurrently, which was not the plan.  MS has apparently accepted this feedback since this is at least the publicly given rationale for the delay in shipping the EF.

Finally, and this one may not pan out, but it is my own hope that ADO.NET EF is being re-aligned somewhat with Linq to Sql.  These two O/RMs are similar enough to share at least some code, and I believe that some of the MS guys have hinted at this too.

So I'm happy that at first there will be one O/RM -- Linq to Sql.  The gurus may be disappointed, but the vast majority of MS devs will be new to O/RMs anyhow, and Linq to Sql will be good enough.  Very much like my simple WilsonORMapper has been so widely used.

Even Small Configuration Changes can cause Bigger Problems

Fri, 20 Apr 2007 18:09:00 GMT

I've got a small app in production that's been running without a glitch until the other day.  It turned out to be a case where the server didn't have enough disk space and nothing more.  That should have been the end of it, but I also decided to add myself to the error emails.  The next day someone reported not getting their regular email, and I couldn't figure it out.

Why would something that had been working perfectly and not been changed just fail randomly?  I looked everywhere in the code and could find no reason, and nothing was logged about this.  That said, there was an exception that was logged, but it was about my email, not the other.  My email address was on another domain, and that wasn't allowed, but I just shrugged it off.  Then it happened again today and all the sudden I realized what should have been very obvious.

That small configuration change I had made to send myself error emails was the actual problem!  My code first sent error emails before sending routine emails, all of which was one try/catch  So when I added myself to the error emails, I introduced an exception that skipped the others.  This was now easy to fix -- just make each email send be in its own try/catch, instead of one.

And the lesson learned:  any change, even a tiny configuration change, can introduce problems.  Even bigger lesson:  when problem occurs after small change, then your change is likely cause.  Those should really have been obvious in retrospect, but I managed to convince myself otherwise.

Function to Load Enum-Typed Properties from Database

Tue, 10 Apr 2007 12:01:00 GMT

Here's a nice library function useful when loading enum-typed properties from your database:

public static T ToEnum(int typeValue) {
    return (T)Enum.ToObject(typeof(T), typeValue);

Garbage Collection Information -- Must Read for .NET Devs

Tue, 10 Apr 2007 11:55:00 GMT

Probably one of the best information sources about .net garbage collection:

Recommendations: Exact Battery and KidzArt NW GA

Mon, 09 Apr 2007 20:36:00 GMT

Do you use Energizer batteries?  Call Exact Battery for all your battery needs, including custom batteries.

Do you have kids in Northwest Georgia that are interested in art?  Call KidzArt NW GA for art instruction.

Atlanta Cutting Edge .NET User Group Meeting

Sat, 03 Mar 2007 20:43:00 GMT

The Atlanta Cutting Edge .NET User Group is meeting Monday, March 5, 2007, at 6:00pm in the Microsoft offices in Alpharetta.  Paul Lockwood will be talking about advanced production debugging and Eric Engler will be talking about the ASP.NET AJAX framework.  Eric promises it will be about much more than the UpdatePanel, which seems to be the extent of most such talks.

Pet-Sitter Recommendation: Wholistic Sitting

Tue, 27 Feb 2007 17:36:00 GMT

This is a non-technical post, but I don't do this often, so please indulge me.  We recently went on a vacation and had to find a new pet-sitter for our dogs, cat, and fish/turtles.  We ended up choosing Wholistic Sitting and were very pleased with Tanya's service.  She sent us emails during our trip, including pictures, and it was obvious she was spending quality time with our pets given her descriptions.  The house was also well taken care of, accidents cleaned up, and the mail brought in.  So I'm very happy to recommend Wholistic Sitting if you need a pet-sitter in the Woodstock, Canton, or Roswell area of Georgia.  And if you've always done kennels then think again, as pet-sitting doesn't cost anymore, especially if you have more than one pet, and your pets are much better off in your own home.

Mimsware Position Announcement: Senior Network Consultant

Tue, 27 Feb 2007 16:26:00 GMT

Mimsware is looking for a Senior Network Consultant.  Check out the job posting if you or someone you know in the Atlanta area is interested and qualified.

Brendon Schwartz at the Atlanta Cutting Edge .NET User Group

Mon, 05 Feb 2007 01:59:00 GMT

The Atlanta Cutting Edge .NET User Group's monthly meeting is on Monday, February 5th, at 6:00 PM:

This month, Brendon Schwartz will introduce the new release of Sharepoint (now known as MOSS). We will cover the high level advancements that make up MOSS 2007 and take a look a few demos of the new UI and features.

Brendon Schwartz is an ASP.NET MVP in Atlanta. He is one of the "Atlanta .NET Regular Guys", as well as a founding member of the Atlanta Microsoft Professionals Group, and VP of Technology on the INETA Board of Directors. You can reach Brendon through his personal website at, and visit his weblog at DevCow (

I won't be able to attend this meeting, but it looks like a good one, so come on out if you can, and hopefully I can make next month.

Hummingbird DM AEM: Automated Email Management

Mon, 22 Jan 2007 21:06:00 GMT

I've had the opportunity lately to work with Hummingbird's Document Management (DM) system on one of my projects at Mimsware.  In particular I was tasked to install, configure, and learn about their Automated Email Management (AEM) system in a test environment.  What is AEM?  It is basically a plugin for MS Exchange that makes it possible for all emails in an organization to be automatically archived into the Hummingbird DM system according to flexible rules that you define.  The goal for some organizations will be to make legal compliance of email retention automatic, and any necessary legal discovery very easy, especially important in a government organization with open record laws.  Other organizations may also be interested in simply making email work like all other documents, so that one document management system can be used to store and search all types of documents in the organization.I was able to get AEM working effectively, but there were also several aspects of the installation and configuration that were not documented well, or which required a lot of trial and error, so I want to share some of the lessons learned.  We are using DM version SR6, so that is what I installed for AEM to begin with, but at least on my system it would not start up successfully after an apparent successful install, so I had to use patch SR6 MR2.  I suppose some will say that you should always use the latest version, but a Hummingbird installation is a very complex beast, so once you have something in place that works for you, its a big deal to update everything.  Luckily in this case I was able to only install the new version for just AEM and leave the rest of the DM system on the current version, but even that was something that had to be thoroughly tested, and there may still be some unknowns.Once I had it installed it quickly became a very long and involved process to configure things correctly, but most of this was documented and in most other cases the log was sufficient.  I think the biggest problem is that everything is too configurable and that there are no smart defaults, and yet for this type of system there are a lot of defaults that just seem to be obvious.  For instance, they provide a default email profile, with fields to store the from, to, cc, bcc, received date, and send date, but none of these are configured for you so you have to specify both the profile and every one of these fields.  We also had some other custom fields that had to be set, and of course I would expect that to be my task, but I just don't see why they can't have the standard email fields defaulted to begin with.  But ignoring my custom fields for now, which were very easy to figure out with their log's help, here is what I determined to be the optimal set of profile values for the standard email fields:PROFILE=(DEF_MPROF), TYPE_ID=(EMAIL), ABSTRACT=(%s), EMAIL_FROM=(%f), EMAIL_TO=(%t), EMAIL_CC=(%h"cc"), EMAIL_BCC=(%h"bcc"), EMAIL_RECEIVED=(%h"datereceived"), EMAIL_SENT=(%h"date")The Type Id might be something else for someone else, since this was a custom type that I created myself, but I also think it just makes good sense to define an Email type to best differentiate email documents.  The Abstract value, which is used for the document description, and wasn't documented anywhere that I could find, may also be something that you may want to set differently -- I've simply set it to the subject.  On the other hand, all of the other values seem non[...]

LINQ to SQL "Real" Example App Available

Sun, 21 Jan 2007 02:57:00 GMT

The Atlanta Code Camp was today, so I finally got to give my LINQ and O/R Mapping talk that I've been preparing.

I tried to have minimal slides so that I could do a deep dive into real code, but I still went a little too long.  The slides look great on my own PC, and in fact they're mostly some I stole straight from other LINQ presentions.  But the overhead I was using made the text nearly unreadable for some reason, which made me take longer on the slides.  It also made some of the standard VS color syntax unreadable, with the work-around being to select that code.  I small the same problem with another speaker in the same room, so I guess it was the projector, but very frustrating.

In the end I still got to hopefully show a fair amount of LINQ to SQL, but I had really hoped to show more.  I also made sure I gave a glimpse at SqlMetal and LINQ to Entities, but both of those were meant to be just glimpses.  Finally, I briefly demoed my new "real" example application written with LINQ to SQL which is included in my download.  This example shows off my own POCO objects with an external XML Mapping file, instead of the ugly code gen with attributes.  Its also a "real" app that consumes the LINQ to SQL with WinForms grids, drop-down filtering, and create, update, and delete.

Note that it assumes the May 2006 CTP, but I'll update it to the next one when it comes out, hopefully next month.  Its also nearly identical to my existing "real" example app downloads that I have for my own ORMapper and NHibernate.

Breaking News: Future Version of .NET Framework to Run on the Mac

Sat, 13 Jan 2007 17:34:00 GMT

 Breaking News: Microsoft is working on having a version of the framework that will run on the Mac!  That's right -- Rory broke this story just the other day in his interview with Scott Guthrie.First, a little bit of background, which although not secret has largely went unnoticed so far.  Hopefully you've heard of WPF/E, which is a subset of WPF that runs in the brower, even Firefox and Safari.  So far the first CTP is largely focused on the cool graphics capabilities and supporting media.  But even in this first CTP the XAML can be programmed against on the client-side using JavaScript, even with Ajax.  But its also already been discretely said that in the future WPF/E will also contain a small cross platform subset of the CLR.  That will mean that we will also be able to use C# or VB on the client-side to program against WPF/E!  And that will be true even in Firefox and Safari on the Mac -- and this is old news that simply hasn't been widely talked about.Mike Harsh as early as March 23, 2006 said: So what is WPF/E?  It is a cross-platform, cross-browser web technology that supports a subset of WPF XAML.  WPF/E also has a friction-free install model and the download size we’re targeting is very small.  WPF/E supports programmability through javascript for tight browser integration.  The WPF/E package also contains a small, cross platform subset of the CLR and .NET Framework that can run C# or VB.NET code.  Yes, we are bringing C# programming to the Mac.And Joe Stegman said this just last month:To be clear, "WPF/E" is independent of the .NET Framework.  In a future version, we'll support a small cross platform CLR based execution engine that will run on both Windows and Apple OS X (everything we do from a runtime perspective works on both Windows and Apple OS X).  In general, our tools are dependent on Windows but with the current version of "WPF/E", you can develop using a text editor and deploy on any web server.  When we support the small CLR, compiling/debugging will require Windows (and so will our designer tools) but running/deployment will still work cross platform.And then Scott said this in the interview at the 9 minute mark:Scott: And overtime we'll also support a managed programming language, uh framework, against WPF/E as well.  So in addition to using JavaScript, you'll be able to use C#, uhRory: You mean, even for the other?Scott: Yeah even for the Safari and Mac. But what Scott said in this interview with Rory went beyond the small CLR for WPF/E in the browser.  Instead Scott said that they were also looking at a version of this that would run outside of the browser, even on the Mac!  Listen to this interview and its pretty clear that Scott was probably not intending to announce this until Mix.  Rory was also quite suprised and wondered if he needed to remove this from the video.  But Scott said he could keep it and acknowledged that this was probably the first time this was publicly talked about.  Rory was of course very excited to be the one to get this scoop out of Scott.  :)So here's what Scott said in the interview at the 23:45 mark:Rory: Is there any possibility of eventually having a framework that runs outside the browser?Scott: Yea, yea, that's definitely something we're looking at is, uh, kind of what we call the in-browser experience and kind of the out-of-browser experience.  And so that's something we[...]