

Der AWS SDK für .NET V3 ist in den Wartungsmodus übergegangen.

Wir empfehlen Ihnen, auf [AWS SDK für .NET V4](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/welcome.html) zu migrieren. Weitere Einzelheiten und Informationen zur Migration finden Sie in unserer [Ankündigung zum Wartungsmodus](https://aws.amazon.com/blogs/developer/aws-sdk-for-net-v3-maintenance-mode-announcement/).

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Wiederholungen und Timeouts
<a name="retries-timeouts"></a>

 AWS SDK für .NET Damit können Sie die Anzahl der Wiederholungen und die Timeout-Werte für HTTP-Anfragen an Dienste konfigurieren. AWS Wenn die Standardwerte für Wiederholversuche und Zeitüberschreitungen für Ihre Anwendung nicht geeignet sind, können Sie sie an Ihre speziellen Anforderungen anpassen. Es ist jedoch wichtig, zu verstehen, wie sich dies auf das Verhalten Ihrer Anwendung auswirkt.

Bei der Bestimmung der Werte für Wiederholversuche und Zeitüberschreitungen gilt es, folgende Überlegungen anzustellen:
+ Wie sollen die AWS SDK für .NET und Ihre Anwendung reagieren, wenn sich die Netzwerkkonnektivität verschlechtert oder ein AWS Dienst nicht erreichbar ist? Soll der Aufruf schnell fehlschlagen oder ist es angemessen, wenn er in Ihrem Auftrag wiederholt versucht wird?
+ Handelt es sich bei Ihrer Anwendung um eine benutzerbezogene Anwendung bzw. Website, die reaktionsfähig sein muss, oder ist es eine Hintergrundverarbeitung mit einer höheren Toleranz für mehr Latenzen?
+ Wird die Anwendung in einem zuverlässigen Netzwerk mit geringer Latenz oder an einem Remote-Standort mit unzuverlässiger Konnektivität bereitgestellt?

## Erneute Versuche
<a name="retries"></a>

### -Übersicht
<a name="w2aac11c13c11b5"></a>

Sie AWS SDK für .NET können Anfragen wiederholen, die aufgrund serverseitiger Drosselung oder Verbindungsabbrüche fehlschlagen. Es gibt zwei Eigenschaften von Dienstkonfigurationsklassen, mit denen Sie das Wiederholungsverhalten eines Dienstclients angeben können. [Servicekonfigurationsklassen erben diese Eigenschaften von der abstrakten Amazon.Runtime. ](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/TClientConfig.html)ClientConfig[Klasse der API-Referenz:AWS SDK für .NET](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/)
+ `RetryMode`gibt einen von drei Wiederholungsmodi an, die in der [Amazon.Runtime definiert sind. RequestRetryMode](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/TRequestRetryMode.html)Aufzählung.

  Der Standardwert für Ihre Anwendung kann mithilfe der `AWS_RETRY_MODE` Umgebungsvariablen oder der Einstellung *retry\_mode* in der gemeinsam genutzten Konfigurationsdatei gesteuert werden. AWS 
+ `MaxErrorRetry`gibt die Anzahl von Wiederholungen an, die auf Service-Client-Ebene zulässig sind. Das SDK wiederholt den Vorgang so oft, bis ein Fehler auftritt und eine Ausnahme ausgelöst wird.

  Der Standardwert für Ihre Anwendung kann mithilfe der `AWS_MAX_ATTEMPTS` Umgebungsvariablen oder der Einstellung *max\_attempts in der gemeinsam genutzten Konfigurationsdatei* gesteuert werden. AWS 

[Detaillierte Beschreibungen dieser Eigenschaften finden Sie in der Zusammenfassung Amazon.Runtime. ClientConfig](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/TClientConfig.html)Klasse der [AWS SDK für .NET API-Referenz](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/). Jeder Wert von `RetryMode` entspricht standardmäßig einem bestimmten Wert von`MaxErrorRetry`, wie in der folgenden Tabelle dargestellt.

|  |  |  | 
| --- |--- |--- |
| Veraltet | 10 | 4 | 
| Standard | 10 | 2 | 
| Adaptiv (experimentell) | 10 | 2 | 

### Behavior
<a name="w2aac11c13c11b9"></a>

**Wenn Ihre Anwendung gestartet wird**

Wenn Ihre Anwendung gestartet wird, `MaxErrorRetry` werden Standardwerte für das SDK konfiguriert `RetryMode` und vom SDK konfiguriert. Diese Standardwerte werden verwendet, wenn Sie einen Service-Client erstellen, sofern Sie keine anderen Werte angeben.
+ Wenn die Eigenschaften in Ihrer Umgebung nicht festgelegt sind, `RetryMode` ist der Standard für als *Legacy* konfiguriert und der Standard für `MaxErrorRetry` wird mit dem entsprechenden Wert aus der vorherigen Tabelle konfiguriert.
+ Wenn der Wiederholungsmodus in Ihrer Umgebung festgelegt wurde, wird dieser Wert als Standard für `RetryMode` verwendet. Der Standardwert für `MaxErrorRetry` ist mit dem entsprechenden Wert aus der vorherigen Tabelle konfiguriert, es sei denn, der Wert für die maximale Anzahl von Fehlern wurde auch in Ihrer Umgebung festgelegt (siehe unten).
+ Wenn der Wert für die maximale Anzahl von Fehlern in Ihrer Umgebung festgelegt wurde, wird dieser Wert als Standard für verwendet`MaxErrorRetry`. Amazon DynamoDB ist die Ausnahme von dieser Regel. Der DynamoDB-Standardwert für `MaxErrorRetry` ist immer der Wert aus der vorherigen Tabelle.

**Während Ihre Anwendung ausgeführt wird**

Wenn Sie einen Service-Client erstellen, können Sie die Standardwerte für `RetryMode` und verwenden`MaxErrorRetry`, wie bereits beschrieben, oder Sie können andere Werte angeben. Um andere Werte anzugeben, erstellen Sie ein Servicekonfigurationsobjekt wie [AmazonDynamoDBConfig](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/DynamoDBv2/TDynamoDBConfig.html)[Amazon](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/SQS/TSQSConfig.html) und fügen Sie es SQSConfig hinzu, wenn Sie den Service-Client erstellen.

Diese Werte können für einen Service-Client nicht mehr geändert werden, nachdem er erstellt wurde.

**Überlegungen**

Wenn ein erneuter Versuch erfolgt, erhöht sich die Latenz Ihrer Anfrage. Sie sollten Ihre Wiederholversuche basierend auf den Anwendungsbeschränkungen für die Gesamtanfragenlatenz und die Fehlerraten konfigurieren.

## Timeouts
<a name="timeouts"></a>

Auf diese AWS SDK für .NET Weise können Sie Timeouts für Anfragen auf Service-Client-Ebene und pro Methodenaufruf konfigurieren. Es gibt zwei Mechanismen für die Konfiguration von Timeouts, die in den folgenden Abschnitten behandelt werden:
+ Wenn Sie [asynchrone Aufrufe](#timeouts-async) verwenden, können Sie den `CancellationToken` Parameter der Methode verwenden.
+ [Wenn Sie [synchrone Aufrufe in.NET Framework](#timeouts-sync-framework) verwenden, können Sie die `ReadWriteTimeout` Eigenschaften `Timeout` und der abstrakten Amazon.Runtime verwenden. ClientConfig](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/TClientConfig.html)Klasse.

### Den `CancellationToken` Parameter für Timeouts verwenden
<a name="timeouts-async"></a>

 AWS SDK für .NET Mit dem können Sie mithilfe des Parameters Zeitüberschreitungen für Anfragen bei asynchronen Aufrufen konfigurieren. `CancellationToken` Der folgende Codeausschnitt zeigt ein Beispiel. Der Code wird ausgelöst, `System.Threading.Tasks.TaskCanceledException` wenn die Anfrage nicht innerhalb von 10 Sekunden abgeschlossen ist.

```
string bucketName = "{{amzn-s3-demo-bucket}}";
string path = "{{pathToBucket}}";
using (var amazonS3Client = new AmazonS3Client(new AmazonS3Config()))
{
    // Cancel request after 10 seconds
    CancellationTokenSource cancellationTokenSource = new CancellationTokenSource(TimeSpan.FromMilliseconds(10000));
    CancellationToken cancellationToken = cancellationTokenSource.Token;
    ListObjectsV2Request listRequestV2 = new()
    {
        BucketName = bucketName,
        Prefix = path,
    };

    ListObjectsV2Response listResponseV2 = await amazonS3Client.ListObjectsV2Async(listRequestV2, cancellationToken);
}
```

### Verwenden der `ReadWriteTimeout` Eigenschaften `Timeout` und für Timeouts
<a name="timeouts-sync-framework"></a>

**Anmerkung**  
Die `Timeout` Eigenschaft hat keine Auswirkungen auf asynchrone Aufrufe. Wenn Sie asynchrone Aufrufe verwenden, finden [Den `CancellationToken` Parameter für Timeouts verwenden](#timeouts-async) Sie stattdessen weitere Informationen.

 AWS SDK für .NET Damit können Sie die Werte für das Anforderungs-Timeout und das read/write Socket-Timeout auf Service-Client-Ebene konfigurieren. [Diese Werte sind in den `ReadWriteTimeout` Eigenschaften `Timeout` und der abstrakten Amazon.Runtime angegeben. ClientConfig](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/TClientConfig.html)Klasse. Diese Werte werden als `ReadWriteTimeout` Eigenschaften `Timeout` und der [HttpWebRequest](https://learn.microsoft.com/en-us/dotnet/api/system.net.httpwebrequest)Objekte weitergegeben, die vom AWS Service-Client-Objekt erstellt wurden. Standardmäßig beträgt der `Timeout`-Wert 100 Sekunden und der `ReadWriteTimeout`-Wert 300 Sekunden.

Wenn Ihr Netzwerk eine hohe Latenz aufweist oder Bedingungen vorliegen, die bei einer Operation einen Wiederholversuch auslösen, kann die Verwendung der Werte für eine lange Zeitüberschreitung und einer hohen Anzahl von Wiederholversuchen dazu führen, dass einige SDK-Operationen scheinbar nicht mehr reagieren.

**Anmerkung**  
Die Version von AWS SDK für .NET , die auf die Portable Class Library (PCL) abzielt, verwendet die [HttpClient](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpclient)Klasse anstelle der `HttpWebRequest` Klasse und unterstützt nur die [Timeout-Eigenschaft](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpclient.timeout).

Nachstehend sind die Ausnahmen von den Standardwerten für Zeitüberschreitungen angeführt. Diese Werte werden überschrieben, wenn Sie die Werte für die Zeitüberschreitung explizit angeben.
+ `Timeout`[und `ReadWriteTimeout` werden auf die Maximalwerte gesetzt, wenn die aufgerufene Methode einen Stream hochlädt, z. B. AmazonS3Client. ](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/S3/MS3PutObjectAsyncPutObjectRequestCancellationToken.html)PutObjectAsync[(), AmazonS3Client. ](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/S3/MS3UploadPartAsyncUploadPartRequestCancellationToken.html)UploadPartAsync[(),. AmazonGlacierClient UploadArchiveAsync()](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Glacier/MGlacierUploadArchiveAsyncUploadArchiveRequestCancellationToken.html) und so weiter.
+ Die Versionen des.NET-Framework-Ziels haben `ReadWriteTimeout` die Maximalwerte für alle [AmazonS3Client `Timeout` und Objekte](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/S3/TS3Client.html) festgelegt. AWS SDK für .NET [AmazonGlacierClient](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Glacier/TGlacierClient.html)
+ [Die Versionen von AWS SDK für .NET , die auf die Portable Class Library (PCL) und .NET Core abzielen, sind `Timeout` auf den Maximalwert für alle AmazonS3Client und Objekte eingestellt. [AmazonGlacierClient](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Glacier/TGlacierClient.html)](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/S3/TS3Client.html)

Das folgende Beispiel zeigt Ihnen, wie Sie den *Standard-Wiederholungsmodus*, maximal 3 Wiederholungen, ein Timeout von 10 Sekunden und ein read/write Timeout von 10 Sekunden (falls zutreffend) angeben. [Dem [AmazonS3Client-Konstruktor wird ein AmazonS3Config-Objekt zugewiesen](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/S3/TS3Client.html).](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/S3/TS3Config.html)

```
var s3Client = new AmazonS3Client(
  new AmazonS3Config
  {
    Timeout = TimeSpan.FromSeconds(10),
    // NOTE: The following property is obsolete for
    //       versions of the AWS SDK für .NET that target .NET Core.
    ReadWriteTimeout = TimeSpan.FromSeconds(10),
    RetryMode = RequestRetryMode.Standard,
    MaxErrorRetry = 3
  });
```