Domanda

Sto provando a fare quanto segue:

  1. L'utente accede alla pagina Web, carica il file XLS
  2. utilizzare ADO .NET per aprire il file XLS utilizzando la connessione del motore JET al file caricato localmente sul server Web

Tutto funziona bene localmente (la mia macchina come client e il web server) - e in effetti funziona sul server web del cliente con client remoti ma non funziona quando si tenta di testare internamente usando un client remoto.

L'errore che ottengo è:

TIME:       [10/1/2008 11:15:28 AM]
SEVERITY:   EXCEPTION
PROGRAM:    Microsoft JET Database Engine
EXCEPTION:  Unspecified error
STACK TRACE:       at System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection connection)
   at System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject)
   at System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup)
   at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
   at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
   at System.Data.OleDb.OleDbConnection.Open()

Il codice che genera l'errore è:

OleDbConnection l_DbConnection;
        OleDbDataAdapter l_DbCommand;
        DataSet l_dataSet = new DataSet();

        l_DbConnection = new OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0; data source=\"" + l_importFileName + "\";Extended Properties=Excel 8.0;");
        l_DbCommand = new OleDbDataAdapter("select * from [Sheet1$]", l_DbConnection);

        //try using provider to read file
        try { l_DbConnection.Open(); }

La chiamata a " Apri " sta sollevando l'eccezione di cui sopra.

Il sito utilizza la rappresentazione e tutte le chiamate vengono effettuate quando l'utente ha effettuato l'accesso sul client. Quello che ho fatto finora per provare a farlo funzionare:

Seguito i passaggi qui http://support.microsoft.com/kb/251254/ e le autorizzazioni assegnate alla directory delle variabili di ambiente TMP / TEMP all'utente che sto usando per testare (anche le autorizzazioni assegnate ad ASPNET e quindi a "Tutti" come una coperta "sono relative alle autorizzazioni?" test).

Garantito che il file sia in fase di caricamento e che il file XLS stesso abbia ereditato le autorizzazioni di directory che consentono all'utente il pieno accesso al file. Ho anche concesso a questa directory le autorizzazioni per "Tutti". per ogni evenienza, anche questo non ha aiutato.

Non ho dovuto modificare alcuna variabile di ambiente e, pertanto, non ho riavviato dopo aver apportato queste modifiche, ma non dovrei avere le autorizzazioni di cartella / file di Windows per avere effetto.

A questo punto sono in perdita totale

È stato utile?

Soluzione

Ok, capito -

risulta che anche con IIS che utilizza la rappresentazione e le variabili di ambiente TMP / TEMP impostate su C: \ WINDOWS \ Temp il processo ASP.NET è ancora in esecuzione con l'account ASPNET e ogni singolo utente aveva bisogno delle autorizzazioni per Documents and Settings \ ASPNET \ Impostazioni locali \ Cartella Temp

Il contrario sarebbe probabilmente quello di creare un nuovo pool di app e far funzionare quel pool di app come utente con autorizzazioni per la cartella giusta anziché ASPNET

Altri suggerimenti

Vai alla directory \ Documents and Settings \ " machineName " \ ASPNET \ Local Settings \ Temp e concedi i diritti di lettura, scrittura all'utente " EveryOne " Quindi funzionerà bene. Inoltre devi impostare " " nel file web.config

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top