Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Übersicht
Das <failure> Element des <add> Elements in der <applicationPools> Auflistung konfiguriert die auszuführenden Aktionen, wenn ein Anwendungspool fehlschlägt. Die Attribute autoShutdownExe, orphanActionExe,rapidFailProtection des <failure> Elements können besonders hilfreich sein, wenn Anwendungen zur Problembehandlung oder zum Debuggen von Anwendungen behoben werden, da sie die Flexibilität bieten, die Aktion anzugeben, die Internetinformationsdienste (INTERNET Information Services, IIS) ausführen wird, wenn eine Anwendung fehlschlägt, z. B. das Ausführen einer externen ausführbaren Datei zum Protokollieren oder Debuggen des Fehlers.
Kompatibilität
| Version | Hinweise |
|---|---|
| IIS 10.0 | Das <failure> Element wurde in IIS 10.0 nicht geändert. |
| IIS 8.5 | Das <failure> Element wurde in IIS 8.5 nicht geändert. |
| IIS 8.0 | Das <failure> Element wurde in IIS 8.0 nicht geändert. |
| IIS 7.5 | Das <failure> Element wurde in IIS 7.5 nicht geändert. |
| IIS 7.0 | Das <failure> Element wurde in IIS 7.0 eingeführt. |
| IIS 6.0 | Das <failure> Element ersetzt Teile der IIS 6.0 IIsApplicationPools-Metabasiseigenschaft. |
Setup
Die <applicationPools> Auflistung ist in der Standardinstallation von IIS 7 enthalten.
Gewusst wie
So bearbeiten Sie Konfigurationseinstellungen für den Schnellfehlerschutz
Öffnen Sie den Internet Information Services (IIS) Manager:
Wenn Sie Windows Server 2012 oder Windows Server 2012 R2 verwenden:
- Klicken Sie in der Taskleiste auf Server-Managerdann auf Tools und dann auf den Internet Information Services (IIS) Manager.
Wenn Sie Windows 8 oder Windows 8.1 verwenden:
- Halten Sie die Windows-Taste gedrückt, drücken Sie den Buchstaben X, und klicken Sie dann auf Systemsteuerung.
- Klicken Sie auf Verwaltung und doppelklicken Sie dann auf den Internet Information Services (IIS) Manager.
Wenn Sie Windows Server 2008 oder Windows Server 2008 R2 verwenden:
- Klicken Sie auf der Taskleiste auf Start, zeigen Sie auf Verwaltung und dann auf den Internet Information Services (IIS) Manager.
Wenn Sie Windows Vista oder Windows 7 verwenden:
- Klicken Sie auf der Taskleiste auf Start und dann auf Systemsteuerung.
- Doppelklicken Sie auf Verwaltung und doppelklicken Sie dann auf den Internet Information Services (IIS) Manager.
Erweitern Sie im Bereich Verbindungen den Servernamen, klicken Sie auf Anwendungspools, und klicken Sie auf den Anwendungspool, den Sie bearbeiten möchten.

Klicken Sie im Bereich Aktionen auf Erweiterte Einstellungen...
Klicken Sie im Dialogfeld Erweiterte Einstellungen auf die Schnellfehlerschutzeigenschaft, die Sie bearbeiten möchten, und bearbeiten Sie dann den Wert im Eigenschaftenwertabschnitt des Dialogfelds, und klicken Sie dann auf OK. Ändern Sie z. B. das Fehlerintervall (Minuten) auf 4 und maximale Fehler auf 4.

Konfiguration
Attribute
| Attribut | Beschreibung | ||||||
|---|---|---|---|---|---|---|---|
autoShutdownExe |
Optionales Zeichenfolgeattribut. Gibt eine ausführbare Datei an, die ausgeführt werden soll, wenn der WWW-Dienst einen Anwendungspool herunterfährt. Sie können das autoShutdownParams-Attribut verwenden, um Parameter an die ausführbare Datei zu senden. | ||||||
autoShutdownParams |
Optionales Zeichenfolgeattribut. Gibt Befehlszeilenparameter für die ausführbare Datei an, die im autoShutdownExe-Attribut angegeben ist. | ||||||
loadBalancerCapabilities |
Optionales Enumerationsattribut. Gibt das Verhalten an, wenn ein Arbeitsprozess nicht gestartet werden kann, z. B. wenn die Anforderungswarteschlange voll ist oder sich ein Anwendungspool im Schnellfehlerschutz befindet. Das loadBalancerCapabilities-Attribut kann einer der folgenden möglichen Werte sein: Der Standardwert ist HttpLevel.
|
||||||
orphanActionExe |
Optionales Zeichenfolgeattribut. Gibt eine ausführbare Datei an, die ausgeführt werden soll, wenn der WWW-Dienst einen Arbeitsprozess verwaist (wenn das Attribut orphanWorkerProcess auf true festgelegt ist). Sie können das Attribut orphanActionParams verwenden, um Parameter an die ausführbare Datei zu senden. | ||||||
orphanActionParams |
Optionales Zeichenfolgeattribut. Gibt Befehlszeilenparameter für die ausführbare Datei an, die vom Attribut orphanActionExe benannt wird. Verwenden Sie %1%, um die Prozess-ID des verwaisten Prozesses anzugeben. | ||||||
orphanWorkerProcess |
Optionales boolesches Attribut. Gibt an, ob ein Arbeitsprozess einem verwaisten Zustand zugewiesen werden soll, anstatt ihn zu beenden, wenn ein Anwendungspool fehlschlägt. Der Standardwert ist false. |
||||||
rapidFailProtection |
Optionales boolesches Attribut. Die Einstellung auf "true" weist den WWW-Dienst an, alle Anwendungen, die sich in einem Anwendungspool befinden, aus dem Dienst zu entfernen, wenn:
true. |
||||||
rapidFailProtectionInterval |
Optionales timeSpan-Attribut. Gibt die Anzahl der Minuten an, bevor die Fehleranzahl für einen Prozess zurückgesetzt wird. Der Standardwert beträgt 00:05:00 (5 Minuten). |
||||||
rapidFailProtectionMaxCrashes |
Optionales uint-Attribut. Gibt die maximale Anzahl von Fehlern an, die innerhalb der Anzahl von Minuten zulässig sind, die durch das rapidFailProtectionInterval-Attribut angegeben werden. Hinweis: Ab IIS 7.5 muss dieser Wert zwischen 1 und 2147483647 sein. Der Standardwert ist 5. |
Untergeordnete Elemente
Keine.
Konfigurationsbeispiel
Das folgende Konfigurationsbeispiel ermöglicht einen schnellen Fehlerschutz für einen einzelnen Anwendungspool namens DefaultAppPool, konfiguriert ein Intervall für schnellen Fehlerschutz von 5 Minuten und legt die maximale Anzahl von Fehlern innerhalb der Anzahl von Minuten auf 5 fest.
<applicationPools>
<add name="DefaultAppPool">
<failure rapidFailProtection="true"
rapidFailProtectionInterval="00:05:00"
rapidFailProtectionMaxCrashes="5" />
</add>
<applicationPoolDefaults>
<processModel identityType="NetworkService" />
</applicationPoolDefaults>
</applicationPools>
Beispielcode
Die folgenden Codebeispiele ermöglichen den schnellen Fehlerschutz für den DefaultAppPool auf Ihrem Server, legen dann das Schutzintervall auf fünf Minuten fest und legen die maximale Anzahl von Abstürzen auf 5 fest.
AppCmd.exe
appcmd.exe set config -section:system.applicationHost/applicationPools /[name='DefaultAppPool'].failure.rapidFailProtection:"True" /commit:apphost
appcmd.exe set config -section:system.applicationHost/applicationPools /[name='DefaultAppPool'].failure.rapidFailProtectionInterval:"00:05:00" /commit:apphost
appcmd.exe set config -section:system.applicationHost/applicationPools /[name='DefaultAppPool'].failure.rapidFailProtectionMaxCrashes:"5" /commit:apphost
Hinweis
Sie müssen unbedingt den Commitparameter auf apphost festlegen, wenn Sie AppCmd.exe verwenden, um diese Einstellungen zu konfigurieren. Dadurch werden die Konfigurationseinstellungen auf den entsprechenden Speicherortabschnitt in der Datei ApplicationHost.config festgelegt.
C#
using System;
using System.Text;
using Microsoft.Web.Administration;
internal static class Sample
{
private static void Main()
{
using (ServerManager serverManager = new ServerManager())
{
Configuration config = serverManager.GetApplicationHostConfiguration();
ConfigurationSection applicationPoolsSection = config.GetSection("system.applicationHost/applicationPools");
ConfigurationElementCollection applicationPoolsCollection = applicationPoolsSection.GetCollection();
ConfigurationElement addElement = FindElement(applicationPoolsCollection, "add", "name", @"DefaultAppPool");
if (addElement == null) throw new InvalidOperationException("Element not found!");
ConfigurationElement failureElement = addElement.GetChildElement("failure");
failureElement["rapidFailProtection"] = true;
failureElement["rapidFailProtectionInterval"] = TimeSpan.Parse("00:05:00");
failureElement["rapidFailProtectionMaxCrashes"] = 5;
serverManager.CommitChanges();
}
}
private static ConfigurationElement FindElement(ConfigurationElementCollection collection, string elementTagName, params string[] keyValues)
{
foreach (ConfigurationElement element in collection)
{
if (String.Equals(element.ElementTagName, elementTagName, StringComparison.OrdinalIgnoreCase))
{
bool matches = true;
for (int i = 0; i < keyValues.Length; i += 2)
{
object o = element.GetAttributeValue(keyValues[i]);
string value = null;
if (o != null)
{
value = o.ToString();
}
if (!String.Equals(value, keyValues[i + 1], StringComparison.OrdinalIgnoreCase))
{
matches = false;
break;
}
}
if (matches)
{
return element;
}
}
}
return null;
}
}
VB.NET
Imports System
Imports System.Text
Imports Microsoft.Web.Administration
Module Sample
Sub Main()
Dim serverManager As ServerManager = New ServerManager
Dim config As Configuration = serverManager.GetApplicationHostConfiguration
Dim applicationPoolsSection As ConfigurationSection = config.GetSection("system.applicationHost/applicationPools")
Dim applicationPoolsCollection As ConfigurationElementCollection = applicationPoolsSection.GetCollection
Dim addElement As ConfigurationElement = FindElement(applicationPoolsCollection, "add", "name", "DefaultAppPool")
If (addElement Is Nothing) Then
Throw New InvalidOperationException("Element not found!")
End If
Dim failureElement As ConfigurationElement = addElement.GetChildElement("failure")
failureElement("rapidFailProtection") = True
failureElement("rapidFailProtectionInterval") = TimeSpan.Parse("00:05:00")
failureElement("rapidFailProtectionMaxCrashes") = 5
serverManager.CommitChanges()
End Sub
Private Function FindElement(ByVal collection As ConfigurationElementCollection, ByVal elementTagName As String, ByVal ParamArray keyValues() As String) As ConfigurationElement
For Each element As ConfigurationElement In collection
If String.Equals(element.ElementTagName, elementTagName, StringComparison.OrdinalIgnoreCase) Then
Dim matches As Boolean = True
Dim i As Integer
For i = 0 To keyValues.Length - 1 Step 2
Dim o As Object = element.GetAttributeValue(keyValues(i))
Dim value As String = Nothing
If (Not (o) Is Nothing) Then
value = o.ToString
End If
If Not String.Equals(value, keyValues((i + 1)), StringComparison.OrdinalIgnoreCase) Then
matches = False
Exit For
End If
Next
If matches Then
Return element
End If
End If
Next
Return Nothing
End Function
End Module
JavaScript
var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var applicationPoolsSection = adminManager.GetAdminSection("system.applicationHost/applicationPools", "MACHINE/WEBROOT/APPHOST");
var applicationPoolsCollection = applicationPoolsSection.Collection;
var addElementPos = FindElement(applicationPoolsCollection, "add", ["name", "DefaultAppPool"]);
if (addElementPos == -1) throw "Element not found!";
var addElement = applicationPoolsCollection.Item(addElementPos);
var failureElement = addElement.ChildElements.Item("failure");
failureElement.Properties.Item("rapidFailProtection").Value = true;
failureElement.Properties.Item("rapidFailProtectionInterval").Value = "00:05:00";
failureElement.Properties.Item("rapidFailProtectionMaxCrashes").Value = 5;
adminManager.CommitChanges();
function FindElement(collection, elementTagName, valuesToMatch) {
for (var i = 0; i < collection.Count; i++) {
var element = collection.Item(i);
if (element.Name == elementTagName) {
var matches = true;
for (var iVal = 0; iVal < valuesToMatch.length; iVal += 2) {
var property = element.GetPropertyByName(valuesToMatch[iVal]);
var value = property.Value;
if (value != null) {
value = value.toString();
}
if (value != valuesToMatch[iVal + 1]) {
matches = false;
break;
}
}
if (matches) {
return i;
}
}
}
return -1;
}
VBScript
Set adminManager = WScript.CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"
Set applicationPoolsSection = adminManager.GetAdminSection("system.applicationHost/applicationPools", "MACHINE/WEBROOT/APPHOST")
Set applicationPoolsCollection = applicationPoolsSection.Collection
addElementPos = FindElement(applicationPoolsCollection, "add", Array("name", "DefaultAppPool"))
If (siteElementPos = -1) Then
WScript.Echo "Element not found!"
WScript.Quit
End If
Set addElement = applicationPoolsCollection.Item(addElementPos)
Set failureElement = addElement.ChildElements.Item("failure")
failureElement.Properties.Item("rapidFailProtection").Value = true
failureElement.Properties.Item("rapidFailProtectionInterval").Value = "00:05:00"
failureElement.Properties.Item("rapidFailProtectionMaxCrashes").Value = 5
adminManager.CommitChanges()
Function FindElement(collection, elementTagName, valuesToMatch)
For i = 0 To CInt(collection.Count) - 1
Set element = collection.Item(i)
If element.Name = elementTagName Then
matches = True
For iVal = 0 To UBound(valuesToMatch) Step 2
Set property = element.GetPropertyByName(valuesToMatch(iVal))
value = property.Value
If Not IsNull(value) Then
value = CStr(value)
End If
If Not value = CStr(valuesToMatch(iVal + 1)) Then
matches = False
Exit For
End If
Next
If matches Then
Exit For
End If
End If
Next
If matches Then
FindElement = i
Else
FindElement = -1
End If
End Function