When you are trying to connect to a "user instance" of SQL Server from your Web application running on Windows 7 or Windows 2008 R2 and you’re getting a message that looks like this:



I will try to help you here.

Note: this error only happens if you have User Instance=true in your connection string. The IIS team made a change to the default identity of the worker process.   Starting with IIS 7.5, Application Pools run with a unique identity based on the Application Pool name, rather than NetworkService – the default identity for IIS6 and IIS7.  The primary reason for this change is to increase the security of IIS and Application Pools by default, providing a much better sandbox between Applications and other Windows services by default. 

Unfortunately, the new identity does not have a user profile, and as you can see from the error, this causes the SqlClient data stack to fail.  There are a few things you can do to "fix" this error: 

1) switch back to NetworkService
2) switch to a user account that has a local profile (like a real user / domain user account).  To do that, fire open IIS Manager and browse to Application Pools node for your computer.  Click on the AppPool for the application you are trying to run and select the “Advanced Settings” task (in yellow on right).  Select identity and choose NetworkService as a built-in account, or select “Custom account” and type in the user/password. 



If you’re a command-line person, you can do it this way (all on one line):

%windir%\system32\inetsrv\appcmd.exe set config 
-section:system.applicationHost/applicationPools /[name='YOUR_APPPPOOL_NAME_HERE'].processModel.identityType:"NetworkService" 
/commit:apphost