wake-up-neo.net

"CS0016: In Ausgabedatei konnte nicht geschrieben werden" Fehler beim Starten einer App in IIS 7

Ich verwende Windows 7 und bin normalerweise kein Entwickler in dieser Einstellung. Ich habe kürzlich einen WCF-Rest-Service in C # erstellt, den ich jetzt auf IIS nur auf meinem lokalen Computer bereitstellen möchte. Nach langem Ringen erstelle ich die Anwendung, aber wenn ich zur Anwendung navigiere, erhalte ich eine Fehlermeldung: Kompilierungsfehler

Beschreibung: Beim Kompilieren einer für die Bearbeitung dieser Anforderung erforderlichen Ressource ist ein Fehler aufgetreten. Bitte überprüfen Sie die folgenden spezifischen Fehlerdetails und ändern Sie Ihren Quellcode entsprechend. 

Compiler-Fehlermeldung: CS0016: In die Ausgabedatei 'c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporäre ASP.NET-Dateien\scom_sibyll\8c0b945e\9329016\App_global.asax.eaax.eagmqgcd.dll' konnte nicht geschrieben werden. 'Zugriff wird verweigert. '

Ich habe das Web nach besten Kräften gejagt und die Berechtigungen für den temporären ASP.NET-Dateifodler geändert, um dem Netzwerkdienstkonto vollständige Rechte zu gewähren, und dies auch mit dem Ordner Temp. Es kopiert eine Reihe von Dateien, bevor es fehlschlägt. Daher verfügt es vermutlich über Schreibberechtigungen. Daher habe ich die Berechtigungen zum Lesen aus meinem Quellordner geprüft, und das funktioniert auch. Ich bemerkte außerdem, dass es kaputt geht, wenn versucht wird, die DLL -Datei zwischenzuspeichern, und ich habe versucht, meinen Antivirus-Schutz zu deaktivieren, sowie die Benutzerkontensteuerung zu deaktivieren, nur um herauszufinden, was das blockiert auftreten. Ich bin jetzt frisch aus Ideen. Hat jemand Anregungen?

15
jasonpgignac

Klingt wie das Konto, unter dem der WCF-Dienst ausgeführt wird, nicht über das Schreibrecht in das Verzeichnis "Temporäre ASP.NET-Dateien" verfügt.

Sie können auch versuchen, die Regiis erneut auszuführen.

% windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis -i

ASP.NET IIS Registrierungstool (Aspnet_regiis.exe)

10
MattC

Für diejenigen, die hier genauso wie ich suchen: Wenn die akzeptierte Antwort das Problem nicht löst, versuchen Sie bitte diesen Artikel: http://lordzoltan.blogspot.com/2011/02/aspnet-2-and-4-default -application-pool.html

Zusammenfassend scheint es, dass derselbe Fehler manchmal angezeigt wird, wenn der Benutzer des App-Pools keinen Zugriff auf den Ordner% TMP% /% TEMP% hat. 

Sie müssen IIS_IUSRS Lese- und Änderungszugriff über den temporären Ordner des Benutzers gewähren, den der App-Pool als ausführt.

Dies kann entweder der temporäre Ordner im Profil des App Pool-Benutzers sein, z. c:\Windows\ServiceProfiles\NetworkService\AppData\Local\Temp oder der temporäre Ordner des Systems unter c:\windows\temp.

Durch diese Einstellung wurde das Problem für mich gelöst.

48
zcrar70

Unter Windows 8/Server 2012 wird aspnet_regiis nicht mehr unterstützt. Ich habe die Neuinstallation mit Windows-Funktionen versucht: Fail. Ich habe versucht, IIS neu zu installieren: Fail. Ich habe eine Neuinstallation über WebPI versucht: Fail.

Ich habe das Problem gelöst, indem ich die ACLs im Windows-Temp-Verzeichnis festlegte.

Hier ist eine Powershell, die den Job macht:

$dir = "C:\Windows\Temp"
$acl = get-acl -path $dir
$new = "IIS_IUSRS","Modify","ContainerInherit,ObjectInherit","None","Allow"
$accessRule = new-object System.Security.AccessControl.FileSystemAccessRule $new
$acl.SetAccessRule($accessRule)
$acl | Set-Acl $dir

Es sind 3 Schritte zu tun:

1 - check if "Application Pool Identity" is NetworkService

2 - NETWORK_SERVICE account needs full control on:
    . C:\Windows\Temp
    . C:\Windows\Microsoft.NET\Framework[related framework]\Temporary ASP.NET Files\

3 - restart the IIS

Fehler behoben

Sie können auch versuchen, regiis erneut auszuführen. "% Windir%\Microsoft.NET\Framework [zugehöriges Framework]\aspnet_regiis -i"

5
ab85

Diese KB hat es für mich gelöst. Es scheint, dass der temporäre Dateipfad in den Umgebungsvariablen des Betriebssystems nicht vorhanden war.

http://support.Microsoft.com/kb/825791

2
user3657646

Beim Entwickeln einer Web-API mit asp.net core 2.0 wurde der gleiche Fehler angezeigt, der nach dem Neustart des Computers behoben wurde.

1

Für mich war die Lösung eine Kombination der hier beschriebenen Korrekturen. Ich musste dem NETWORK_SERVICE-Konto die volle Kontrolle über geben 

C:\Windows\Temp

und 

C:\Windows\Microsoft.NET\Framework [zugehöriges Framework]\Temporäre ASP.NET-Dateien \

und ändern Sie auch die Anwendungspoolidentität in NetworkService.

Vergessen Sie auch nicht, IIS neu zu starten, nachdem Sie NETWORK_SERVICE für die Temp-Ordner die vollständige Kontrolle erteilt haben

1
IonutC

Ich habe Lese- und Schreibzugriff auf C:\Windows\Temp für die Gruppe IIS_WPG erteilt. Das hat für mich funktioniert. Ich bin auf Server 2003 R2 und IIS 6 und der Gruppenname ist unterschiedlich. Ich führe es aus http://learn.iis.net/page.aspx/140/understanding-built-in-user-and-group-accounts-in-iis/ wo es heißt:

• Das in IUSR integrierte Konto ersetzt das Konto IUSR_MachineName. 

• Die integrierte Gruppe IIS_IUSRS ersetzt die Gruppe IIS_WPG. 

Vielen Dank an Dommer für den Vorschlag des Windows-Temp-Ordners und an zcrar70 für das Nice summery und einen Link mit ausführlicher Beschreibung.

1
Nedcode

Ich habe Berechtigungen, aber ich bekomme gerade diese Fehlermeldung. "Rechner neu starten" funktioniert für mich

0
elfekz

Manchmal werden die Temp-Dateien möglicherweise von einem anderen Prozess auf der Arbeitsstation gesperrt. Starten Sie als ersten Schritt die Workstation neu und überprüfen Sie die Anwendung.

0
user2202819

Unter Windows 8 hat absolut nichts für mich funktioniert. Eines Tages entschieden sich App-Pools plötzlich dafür, dass sie nicht mehr unter dem NetworkService-Konto arbeiten möchten.

Ich habe das Problem gelöst, indem ich den App-Pool so geändert habe, dass er unter meinem eigenen Benutzerkonto funktioniert. Keine großartige Lösung, ich weiß, aber es hat funktioniert.

0
BrettB

In einer Unternehmensumgebung trat dieser Fehler zu früh auf, nachdem das Unternehmen verschiedene Sicherheitsmaßnahmen implementiert hatte, durch die den Benutzern Administratorrechte entzogen wurden.

Für Entwickler genehmigte das Unternehmen die Erstellung von Konten, die verwendet werden konnten, und wir mussten diese zur Administratorgruppe des PCs hinzufügen und dann die Identität des Anwendungspools ändern, um das Konto zu verwenden.

BEISPIEL (Windows 10)

Konto für Entwickler erstellt: Domäne\Entwickler

Jemand mit Administratorrechten für den PC muss Folgendes tun:

  • Gehen Sie zu Systemsteuerung\Benutzerkonten\Benutzerkonten verwalten
  • Klicken Sie auf die Registerkarte Erweitert und dann auf die Schaltfläche Erweiterte Benutzerverwaltung
  • Klicken Sie auf der Seite "lusrmgr" in der linken Spalte auf den Ordner "Groups" (Gruppen), um Gruppen im mittleren Bereich anzuzeigen
  • Klicken Sie anschließend mit der rechten Maustaste auf die Gruppe Administratoren und wählen Sie "Zur Gruppe hinzufügen ...".
  • Klicken Sie im Bereich "Administratoreigenschaften" auf die Schaltfläche "Hinzufügen ..."
  • Das Dialogfeld "Benutzer, Computer, Dienstkonten oder Gruppen auswählen" wird geöffnet. Konto hinzufügen (in diesem Beispiel Domäne\Entwickler)
  • Klicken Sie dann auf die Schaltfläche OK (diese Schaltfläche ist deaktiviert, wenn Sie keine Administratorrechte haben).

Konfigurieren Sie nun den App-Pool:

  • Öffnen Sie IIS Manager, und wählen Sie Anwendungspools aus
  • Klicken Sie auf den gewünschten Anwendungspool, damit er hervorgehoben wird, und klicken Sie dann rechts im Bedienfeld Aktionen auf "Erweiterte Einstellungen ..."
  • Klicken Sie im Abschnitt Prozessmodell auf die Einstellung Identität und die Schaltfläche mit den Auslassungspunkten
  • Wählen Sie im Dialogfeld "Anwendungspoolidentität" die Option "Benutzerdefiniertes Konto" aus und klicken Sie auf die Schaltfläche "Festlegen"
  • Geben Sie den Account und das Passwort ein

Zu diesem Zeitpunkt war ich in der Lage, alles zu schließen, IIS und dann meine App auszuführen. Sie konnte dann auf die temporären Ordner zugreifen, auf die sie vorher nicht zugreifen konnte.

0
Bernard Dy

Dieser Fehler tritt auf, wenn ich eine bat-Datei zum Löschen temporärer Dateien verwende. Es löscht wahrscheinlich das Verzeichnis selbst und die angegebenen Berechtigungen sind weg. Also musst du sie irgendwie wiederherstellen.

Der einfachste Weg ist die vollständige Kontrolle über folgende Verzeichnisse für Jeder:

C:\Windows\Temp

C:\Windows\Microsoft.NET\Framework [zugehöriges Framework]\Temporäre ASP.NET-Dateien \

0
x-freestyler