2017-08-18 2 views
0

ich ein Stück Code haben, der mit einigen eingebauten Funktionen erzeugt Exceleine cmd-Datei aus IIS8

string xmlfilePath = "C:\\Test\\standard_xml.xml"; 
string script = "C:\\Test\\script.vbs"; 
string template = "Template"; 
string cmdfilePath = @"C:\\Test\\executable.cmd"; 
if (File.Exists(cmdfilePath)) 
    { 
    File.Delete(cmdfilePath); 
    } 

using (FileStream fs = File.Create(cmdfilePath)) 
    { 
    Byte[] info = new UTF8Encoding(true).GetBytes("\"" + script + "\"" + " " + 
     "\"" + template + "\"" + " \"" + xmlfilePath + "\""); 
    fs.Write(info, 0, info.Length); 
    } 
    var process = Process.Start(cmdfilePath); 
    process.WaitForExit(); 

Diese Codes erzeugt eine Excel und hat einige erforderlichen Operationen.

Dies funktioniert ziemlich gut beim Testen im Visual Studio, aber wenn ich es auf IIS8 laufen, funktioniert es nie. Ich habe versucht, die verschiedenen Lösungen, die im Internet erwähnt werden, nichts funktioniert.

Jede Hilfe wird geschätzt.

+0

Welche Ausnahme (n) erhalten Sie? Loggen Sie sich ein, um zu sehen, welche Zeilen ausgeführt werden. Normalerweise ist dies auf der Grundlage von Berechtigungen möglich. Sie könnten versuchen, DefaultAppPool zu den Verzeichnisberechtigungen hinzuzufügen oder Ihre Datei zu überprüfen, ob es x64 auf einem x86-Server ist. – user685590

+0

Hi ... es ist ein x64 Server .. leider hilft mir das Log nicht viel –

+0

Würdest du das Skript für die 'exeunable.cmd' Datei hochladen können? – ryancdotnet

Antwort

0

Ohne sicher zu wissen (durch einige Fehlerprotokolle, eventvwr Screenshots), meine Vermutung ist, dass Sie in ein Berechtigungsproblem geraten.

Bei der Ausführung dateibasierter Vorgänge von IIS müssen Sie die AppPool-Identität berücksichtigen, die für die Website verwendet wird. Die AppPool-Identität müsste Schreibberechtigungen für diesen bestimmten Ordner haben.

Ich würde vorschlagen, die AppPool Benutzeridentität zu der integrierten "ApplicationPoolIdentity" zu lassen, da dies die sicherste Option ist.

Es gibt viele gute Informationen zu diesem Thema auf MSDN: https://docs.microsoft.com/en-us/iis/manage/configuring-security/application-pool-identities

aussehen Insbesondere bei Securing Ressourcen Teil, wie Dateiberechtigungen hinzuzufügen: https://docs.microsoft.com/en-us/iis/manage/configuring-security/application-pool-identities#securing-resources

Es gibt andere Szenarien, in denen Sie den Benutzer außer Kraft setzen können Konto für einen bestimmten AppPool und sogar auf der Website (für Dinge wie Identitätswechsel, etc.), aber wenn Sie diese nicht tun, dann sollte das oben genannte funktionieren.

+0

Hallo Ryan .. Danke für die Antwort..Ich habe versucht all dies .. aber es funktioniert nicht .. Das lustige, was ich sehe einen Prozess für meine CMD in den Task-Manager Details. Es wird also tatsächlich der Prozess erstellt, aber nicht ausgeführt –

Verwandte Themen