ASP.Net Com-InterOp-Excel-Generation Problem beim hosten
In meinem ASP.Net Anwendung ich bin die Generierung einer Excel-Datei mit MsExcel Objekt Libby (Com-InterOp) . Die Anwendung funktionierte gut in der VS dev. Umwelt.
Aber wenn ich host in den server, ich bekomme folgende Fehlermeldung, wenn ich kein Benutzer angemeldet ist, mit dem server über Remote-desktop-Verbindung.
"Abrufen des COM-Klassenfactory für die Komponente mit CLSID {00024500-0000-0000-C000-000000000046} konnte aufgrund des folgenden Fehlers: 8000401a Der Serverprozess konnte nicht gestartet werden da die konfigurierte Identität falsch ist. Überprüfen Sie Benutzernamen und Kennwort. (Ausnahme von HRESULT: 0x8000401A)."
Ich habe DCOM-Konfigurationen als gut. Das merkwürdige ist, dass mindestens ein Benutzer sollte mit dem server verbunden, durch RDC. Wenn dem so ist kann jeder generieren zeichnet. Wenn nicht die oben genannten Fehler wirft. Rest der Funktionalität der Anwendung und funktioniert einwandfrei.
Dem server ist Windows Server 2008, IIS7. Und die Benutzer der Anwendung über ein VPN.
Ist eine erfahrene ein Problem wie dieses?
Vielen Dank im Voraus.
- in DCOMCONFIG, welcher Benutzer eingestellt ist in der Start/ausführen Abschnitt? stellen Sie sicher, dass die Anmeldedaten korrekt sind
- überprüfen Sie, wie @shai vorgeschlagen, oder einfach nur imporsonate der website-Benutzer auf windows admin-Benutzer im web.config-Datei, wenn es nicht weh tut
- Ich habe alle Berechtigungen für folgenden Nutzer in der Start-und Aktivierungsberechtigungen Abschnitt.Interaktive,IIS_Isurs,Administratoren,Netzwerkdienst,System,Jeder.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Am Ende habe ich erstellt, Benutzer ist Administrator auf dem computer mit dem web-service, und dann setze ich diesem Benutzer
wie auf dem Bild gezeigt unten:
Arbeitete. Und wir müssen nicht lassen Sie den computer gesperrt werden.
Das problem ist, dass die 'Identität' für die Anwendung nicht genügend Rechte. Dies könnte mehrere Ursachen haben, aber bevor wir in diese, lassen Sie uns herausfinden, wo diese Identität konfiguriert ist. Öffnen Sie Control Panel, Administrative Tools, und doppelklicken Sie auf Komponentendienste. Erweitern Sie COM+ - Anwendungen mit der rechten Maustaste auf die Anwendung in Frage, schlagen Sie Eigenschaften, und wechseln Sie auf die Registerkarte Identität.
Ein möglicher Grund ist, dass bei der Festlegung der Identität für Ihre Anwendung, Sie wählen einfach einen Benutzer, der kein Zugriff auf die DLL, oder eine Datei-oder system-rufen Sie die DLL-berührt.
Wenn diese Identität auf den 'Interaktiver Benutzer', dann wird der oben angegebene Fehler kann auftreten, wenn der Benutzer derzeit angemeldet ist die Maschine ist ein peon, oder wenn niemand angemeldet ist, bei alle. Dies ist der primäre Grund, warum dieser Fehler nie erkannt in der Entwicklung... den Benutzer der Entwicklung der COM+ - Anwendung, und die vollständige Kontrolle der Maschine, ist auch der Benutzer angemeldet und läuft als interaktiver Benutzer.
Stellen Sie sicher, verwenden Sie ein lokales Benutzerkonto mit ausreichenden Berechtigungen, wenn das ist, was Ihre DLL erfordert. Benutzer, die verwendet VPN finden können Schwierigkeiten aufgrund dieser.
Microsoft nicht empfohlen oder unterstützt server-side-Automation der Excel-Anwendung in einen server-Umgebung wie ASP.NET finden Sie hier . Bessere Nutzung Excel-Paket plus (xslx) oder Excel-Bibliothek (xls)
Mithilfe von Office-Interop auf den server wird NICHT unterstützt von MS - siehe http://support.microsoft.com/default.aspx?scid=kb;EN-US;q257757#kb2
Seit Windows Vista MS führte mehrere sicherheitsrelevante Maßnahmen, die verhindern, dass Windows-Dienst (IIS ist nur ein spezieller Fall von dieser) zu tun, "desktop-like" Dinge... was bedeutet, dass Sie haben würde, zu umgehen, mehrere Sicherheits-Maßnahmen (Imitation allein nicht schneiden Sie es!) um es zu arbeiten (NICHT empfohlen!).
BEACHTEN Sie, dass die Integrierte VS-web-server NICHT simulieren das Verhalten des IIS bzgl. Berechtigungen etc.
Umgang mit Excel-in eine server-Szenario gibt es mehrere Optionen (freie und kommerzielle), die es gibt:
Kann ich nur empfehlen, Aspose.Zellen und Flexcel... und nicht versuchen SpreadsheetGear aber hören+Lesen Sie viele gute Dinge über Sie.
Gratis-Optionen (obwohl für xlsx-format!) sind zum Beispiel OpenXML 2 von MS und EPPlus.
Nur die
Identity
auf dieser Benutzer, und geben Sie den Benutzernamen und das Kennwort eines Benutzers ein, der über ausreichende Rechte verfügt. In meinem Fall habe ich einen Benutzer eingegeben, der power-user-Gruppe.Ich gemacht, die Forschung auf dieses problem, welche ich auch hatte.
Ich hab das: http://forums.asp.net/t/1093228.aspx
Ich weiß nicht, wie eine gute Lösung, aber es funktioniert. 🙂
Ich habe die gleiche situation, wenn Sie versuchen zu Lesen, eine hochgeladene Excel-Datei.
Lassen Sie versuchen, diese Schritte. Es funktioniert für mich.
...
Hoffe, es ist hilfreich für Sie.
Danke für @Rofans.Net basierend auf den Punkten, die durch ihn haben wir festgestellt, dass der server, der die app gehostet wurde, in eine 3rd-party-data-center-und es ist kein Benutzer auf dem server angemeldet, die ganze Zeit. Nur angemeldete Benutzer sind die RDC-Nutzer.
So dass wir es geschafft haben, dem Benutzer alle Möglichkeiten der Anmeldung und den computer in die Verriegelte angegeben, so dass alle Möglichkeiten, es hat einen angemeldeten Benutzer.
Dies ist die einzige Möglichkeit, die wir gefunden und wenn jemand einen besseren Weg gefunden, bitte hinzufügen.
Dank.