3 Stimmen

OLEDBConnection.Open() erzeugt 'Nicht spezifizierter Fehler'.

Ich habe eine Anwendung, die eine Excel-.xls-Datei in das Dateisystem hochlädt, die Datei mit einem oledbconnection-Objekt mit der .open()-Methode auf der Objektinstanz öffnet und dann die Daten in einer Datenbank speichert. Das Hochladen und Schreiben der Datei in das Dateisystem funktioniert gut, aber ich erhalte einen Fehler, wenn ich versuche, die Datei auf unserem Produktionsserver zu öffnen sólo . Die Anwendung funktioniert problemlos auf zwei anderen Servern (Entwicklungs- und Testserver).

Der folgende Code erzeugt einen "Unspecified Error" in der Exception.Message.

Zitat:

        System.Data.OleDb.OleDbConnection x = new System.Data.OleDb.OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + location + ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'");
        try
        {
            x.Open();
        }
        catch (Exception exp)
        {
            string errorEmailBody = " OpenExcelSpreadSheet() in Utilities.cs.  " + exp.Message;
            Utilities.SendErrorEmail(errorEmailBody);
        }

:Zitat Ende

Der Server ist c: \\temp und c: \Documents und Einstellungen \\aspnet\local Einstellungen \temp Ordner geben beide \aspnet volle Kontrolle.

Ich glaube, dass es eine Art Berechtigungsproblem gibt, aber ich kann keinen Unterschied zwischen den Berechtigungen für die notierten Ordner und dem Ordner/Verzeichnis, in das die Excel-Datei hochgeladen wird, feststellen. Zum Speichern und Öffnen der Datei wird derselbe Ort verwendet, und die Methoden funktionieren auf meiner Workstation und zwei Webservern. Es handelt sich um Windows 2000 SP4-Server.

0voto

Mike Smith Punkte 39

Jawohl. Das habe ich auch gemacht. Ich habe IMEX=1 entfernt, die erweiterten Eigenschaften entfernt usw. Ich habe es geschafft, es auf dem Entwicklungs- und dem Testserver zu zerstören :) Ich habe sie nach und nach wieder eingebaut, bis das Problem auf Dev und Test behoben war, aber auf Prod funktioniert es immer noch nicht.

0voto

GideonMax Punkte 416

Ich bin nicht sicher, ob dies das Problem ist, mit dem Sie konfrontiert sind,
aber bevor Sie die Verbindung auflösen, sollten Sie Connection.Close() ausführen,
weil der Befehl Connection.Dispose() von Component geerbt wird und bestimmte Verbindungsressourcen nicht ordnungsgemäß entsorgt.
Eine nicht ordnungsgemäße Entsorgung der Verbindung könnte zu Zugangsproblemen führen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X