System.Data.OleDb.OleDbException: Unspecified error

SYMPTOMS

When you connect to a Microsoft Access database from a Microsoft ASP.NET application, you receive the following error message:

System.Data.OleDb.OleDbException: Unspecified error

CAUSE

The ASP.NET Web application that has the impersonation element set to true in the Web.config file, and that has the authentication element set to Windows in the Web.config file, runs under the impersonated account. The code in the ASP.NET Web application connects to an Access database. When the connection is made, the Microsoft Jet OLE DB creates temporary files in the Temp folder in the following directory:

Document and Settings\ServerName\ASPNET\Local settings

where ServerName is the name of your server.

If the impersonated user account does not have read/write permissions enabled in the Temp folder, you receive the error message that is mentioned in the "Symptoms" section.

RESOLUTION

To resolve this problem, enable read/write permissions for the impersonated user account in the Temp folder. To do this, follow these steps:

1.

In Windows Explorer, locate the following folder:

Document settings\ServerName\ASPNET\Local settings\Temp

where ServerName is the name of your server.

2.

Right-click the Temp folder, and then click Properties.

3.

In the Properties dialog box, click the Security tab.

4.

On the Security tab, click Add, and then type ServerName\UserAccount in the Select Users or Groups text box, where ServerName is the name of your server, and where UserAccount is the name of the impersonated account. Click OK.

5.

Click to select the Read and the Write check boxes, and then click OK.

STATUS

This behavior is by design.

MORE INFORMATION

Steps to Reproduce the Behavior

1.

Create a new ASP.NET Web application. To do this, follow these steps:

a.

Start Microsoft Visual Studio .NET.

b.

Create a new Microsoft Visual C# .NET or a new Microsoft Visual Basic .NET ASP.NET Web Application. Name the project SampleApplication.

c.

Write the code in the SampleApplication file to connect to the Access database.

2.

Set the authentication mode to Windows. To do this, follow these steps:

a.

In Solution Explorer, double-click Web.config.

b.

Under the <System.web> section, modify the authentication element as follows:

<authentication mode="Windows" />

3.

Set the impersonation element to true. To do this, follow these steps:

a.

Under the <System.web> section, add the impersonation element as follows:

<identity impersonate="true" />

b.

Save, and then close the Web.config file.

4.

On the Build menu, click Build SampleApplication.

5.

Set the authentication method on the application. To do this, follow these steps:

a.

Click Start, and then click Run.

b.

In the Open text box, type inetmgr, and then click OK.

c.

In the Internet Information Services dialog box, click Default Web Site.

d.

Right-click SampleApplication, and then click Properties.

e.

In the SampleApplication Properties dialog box, click the Directory Security tab.

f.

Under Anonymous access and authentication control, click Edit.

g.

In the Authentication Methods dialog box, click to select the Anonymous Access check box. Make sure that the User name text box has the UserAccount value, where UserAccount is a Windows account. Click OK two times, and then close the Internet Information Services dialog box.

h.

Make sure that read/write permissions for UserAccount are not enabled in the following folder:

Document settings\ServerName\ASPNET\Local Settings\Temp

Note IIS uses the following authentication methods to authenticate against the ASP.NET Web application:

Anonymous Authentication: IIS uses the IIS anonymous user account (the default account is IUSR_computername).

Integrated Authentication: IIS uses the user account of the user who is currently logged on.

Basic Authentication: IIS uses the user-specified account.

6.

Run the application. To do this, type http://<ServerName>/SampleApplication/Webform1.aspx in the Address bar of the Web browser, and then click Go.

You may see the error message that is mentioned in the "Symptoms" section.