Identificativo articolo: 316675 - Ultima modifica: domenica 13 maggio 2007 - Revisione: 6.3

Possibile eccezione non gestita durante il tentativo di stabilire una connessione a un database di Access da un processo di lavoro di ASP.NET

Questo articolo è stato precedentemente pubblicato con il codice di riferimento I316675
In questo articolo si fa riferimento al seguente spazio dei nomi della libreria di classi di Microsoft .NET Framework:
  • System.Data.OleDb

In questa pagina

Espandi tutto | Chiudi tutto

Sintomi

Nelle circostanze descritte di seguito è possibile che venga generata un'eccezione non gestita:
  • Un processo di lavoro di ASP.NET (Aspnet_wp.exe) viene eseguito con l'account ASPNET predefinito.
    e
  • Non viene attivata la rappresentazione dell'applicazione.

    e
  • Si tenta di stabilire la connessione o scrivere in un database di Access.
In questi casi, è possibile che venga generata una delle seguenti eccezioni:
Il modulo di gestione di database Microsoft Jet non è in grado di aprire il file "C:\Nwind.mdb". Il file è già aperto con accesso esclusivo da un altro utente o è necessario disporre dell'autorizzazione per visualizzare i dati.
Per l'operazione è necessaria una query aggiornabile.

Cause

Per motivi di protezione, il processo di lavoro di ASP.NET viene eseguito con l'account predefinito ASPNET. Se non si attiva la rappresentazione di un'applicazione, tutti i thread che eseguono la richiesta per quell'applicazione saranno eseguiti con l'account del processo.

Il problema si verifica perché l'account ASPNET non dispone di autorizzazioni sufficienti per stabilire la connessione o per scrivere in un database di Access.

Risoluzione

Per risolvere il problema, utilizzare uno dei metodi descritti di seguito.
  • Configurare il processo di lavoro di ASP.NET in modo che venga eseguito con l'account SYSTEM nella sezione <processModel> del file Machine.config.
  • Per motivi di protezione, Microsoft consiglia di attivare la rappresentazione dell'applicazione ASP.NET. Questo metodo funziona se l'utente rappresentato dispone delle autorizzazioni necessarie per il computer e il database cui si desidera accedere.
  • Concedere autorizzazioni in lettura e scrittura per il gruppo "Everyone" al database e alla cartella del database. Questo metodo non è sicuro, pertanto Microsoft sconsiglia di utilizzarlo.

Status

Si tratta di un comportamento legato alla progettazione del prodotto.

Informazioni

Se è necessario disporre di un numero illimitato di utenti, supporto ininterrotto e transazioni ACID, Microsoft consiglia di utilizzare Microsoft SQL Server con Microsoft Internet Information Services (IIS). Anche se Microsoft Active Server Pages (ASP) può essere utilizzato con qualsiasi database compatibile OLE DB o ODBC, IIS è stato sottoposto a test estensivi ed è progettato per interagire con Microsoft SQL Server in situazioni di alta confluenza di transazioni e con un numero illimitato di utenti: una situazione possibile in uno scenario Internet.

Nota "ACID" è l'acronimo delle quattro proprietà dei sistemi di elaborazione delle transazioni: Atomicity, Consistency, Isolation, Durability.

ASP supporta l'utilizzo del modulo database Microsoft Jet come origine dati valida. Il driver Microsoft ODBC per Access e il provider Microsoft OLE DB per Jet non sono tuttavia destinati all'uso con applicazioni server che prevedono un'alta confluenza di traffico, un numero elevato di accessi simultanei e attività ininterrotta, quali le applicazioni Web, le applicazioni di commercio elettronico, le applicazioni di gestione delle transazioni, i server di messaggistica e così via.

Procedura per riprodurre il problema

  1. Creare un nuovo progetto Applicazione Web ASP.NET in Microsoft Visual C# .NET.
  2. Aggiungere il seguente codice alla sezione "Declaration" del Web Form, che si trova nella parte superiore della finestra del codice:
    using System.Data.OleDb;					
  3. Aggiungere il seguente codice all'evento Page_Load:
        String myConn  ="Provider=Microsoft.JET.OLEDB.4.0;Data Source=C:\\Nwind.mdb;";
        String myQuery  = "Insert into Customers(CustomerID,CompanyName) Values ('aaaaa', 'aaaaa')";
    
        OleDbConnection cn = new OleDbConnection(myConn);
        cn.Open();
        OleDbCommand cmd = new OleDbCommand(myQuery, cn);
        cmd.ExecuteNonQuery();
        cn.close();
    					
  4. Modificare la stringa di connessione secondo le esigenze del proprio ambiente.
  5. Compilare il progetto.
  6. Visualizzare WebForm1.aspx nel browser. Verrà generata una delle eccezioni sopra indicate.

Riferimenti

Per ulteriori informazioni, fare clic sui numeri degli articoli della Microsoft Knowledge Base riportati di seguito:
306590  (http://support.microsoft.com/kb/306590/ ) Cenni preliminari sulla protezione ASP.NET
307626  (http://support.microsoft.com/kb/307626/ ) Cenni preliminari sulla configurazione di ASP.NET
Per ulteriori informazioni sulla sezione <processModel>, visitare il seguente sito Web Microsoft Developer Network (informazioni in lingua inglese): Sezione
<processModel>
http://msdn2.microsoft.com/en-us/library/7w2sway1(vs.71).aspx (http://msdn2.microsoft.com/en-us/library/7w2sway1(vs.71).aspx)

Le informazioni in questo articolo si applicano a:
  • Microsoft ADO.NET 2.0
  • Microsoft ADO.NET 1.0
  • Microsoft Access 2002 Standard Edition
  • Microsoft Access 2000 Standard Edition
  • Microsoft Office FrontPage 2003
  • Microsoft ASP.NET 1.0
Chiavi: 
kbtshoot kberrmsg kbnofix kbprb kbsystemdata KB316675
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.
 

Traduzione articoli

 

Related Support Centers