[This applies to ASP.NET 2.0, Windows Server 2003]
We have a load balancing setup for our web site, with two machines sharing the load equally. Any supporting files are stored on a third app server which the two web servers access. We didn't want the overhead of a domain, but initially had some trouble getting this to work.
We set up a virtual directory on each web server, pointing to the share on the app server. The virtual directory used an account name and password which was duplicated on the app server. This worked fine, until we tried to write files and directories. Since we had to resolve the virtual path to an absolute one, we were trying to write not with the special account we had set up, but the default Network Service account. This did not have permission, and since the account is managed by Windows it had a different password on each machine, so it could not be used to access the share.
What we ended up needing to do was have the user with permission on the share run the app pool (instead of the default network service). To ensure it had the permission needed to run ASP.NET we added it to the IIS_WPG group. We had to ensure the passwords were the same across machines so this would work.
Watch out here though. The Network Service account has permissions on WINDOWS\TEMP, but IIS_WPG does not. This cause problems with a web service call we had. Once we added IIS_WPG to the permission list, duplicating Network Service's permissions, we were fine. There may be other situations like this, but it's the only one we've come across so far. The next time we see a strange, unexplicable error though, this will probably be the first thing we check.