

的版本 4 (V4) 适用于 .NET 的 AWS SDK 已经发布！

有关重大更改和迁移应用程序的信息，请参阅[迁移主题](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/net-dg-v4.html)。

 [https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/net-dg-v4.html](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/net-dg-v4.html)

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 配置其他应用程序参数
<a name="net-dg-config-other"></a>

**注意**  
本主题中的信息特定于基于 .NET Framework 的项目。默认情况下，`App.config` 和 `Web.config` 文件不存在于基于 .NET Core 的项目中。

## 打开查看 .NET Framework 内容
<a name="w2aac11c29b9b5b1"></a>

可配置多种应用程序参数：
+  `AWSLogging` 
+  `AWSLogMetrics` 
+  `AWSRegion` 
+  `AWSResponseLogging` 
+  `AWS.DynamoDBContext.TableNamePrefix` 
+  `AWS.S3.UseSignatureVersion4` 
+  `AWSEndpointDefinition` 
+  [AWS 服务生成的终端节点](#config-setting-service-generated-awsendpointdefinition) 

这些参数可以在应用程序的 `App.config` 或 `Web.config` 文件中配置。尽管您也可以使用 适用于 .NET 的 AWS SDK API 对其进行配置，但我们建议您使用应用程序的`.config`文件。此处介绍了这两种方法。

有关本主题后文中所述的使用 `<aws>` 元素的更多信息，请参阅[适用于 .NET 的 AWS SDK配置文件参考](net-dg-config-ref.md)。

### AWSLogging
<a name="config-setting-awslogging"></a>

配置开发工具包应如何记录事件 (如果记录)。例如，建议的方法是使用 `<logging>` 元素，该元素是 `<aws>` 元素的子元素：

```
<aws>
  <logging logTo="Log4Net"/>
</aws>
```

或者：

```
<add key="AWSLogging" value="log4net"/>
```

可能的值包括：

** `None` **  
禁用 事件日志记录。这是默认值。

** `log4net` **  
使用 log4net 记录。

** `SystemDiagnostics` **  
使用 `System.Diagnostics` 类记录。

您可以为 `logTo` 属性设置多个值，以逗号分隔。以下示例在 `.config` 文件中设置 `log4net` 和 `System.Diagnostics` 日志记录：

```
<logging logTo="Log4Net, SystemDiagnostics"/>
```

或者：

```
<add key="AWSLogging" value="log4net, SystemDiagnostics"/>
```

或者，使用 适用于 .NET 的 AWS SDK API 合并[LoggingOptions](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Amazon/TLoggingOptions.html)枚举值并设置 [AWSConfigs.Logging](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Amazon/TAWSConfigs.html) 属性：

```
AWSConfigs.Logging = LoggingOptions.Log4Net | LoggingOptions.SystemDiagnostics;
```

对此设置的更改仅对新的 AWS 客户端实例生效。

### AWSLog指标
<a name="config-setting-awslogmetrics"></a>

指定开发工具包是否应记录性能指标。要在 `.config` 文件中设置指标日志记录配置，请在 `<logging>` 元素中设置 `logMetrics` 属性值，该元素是 `<aws>` 元素的子元素：

```
<aws>
  <logging logMetrics="true"/>
</aws>
```

此外，在 `<appSettings>` 部分中设置 `AWSLogMetrics` 关键字：

```
<add key="AWSLogMetrics" value="true">
```

或者，要使用 适用于 .NET 的 AWS SDK API 设置指标日志记录，请设置[AWSConfigs。 LogMetrics](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Amazon/TAWSConfigs.html)财产:

```
AWSConfigs.LogMetrics = true;
```

对于所有客户端/配置，此设置用于配置默认 `LogMetrics` 属性。对此设置的更改仅对新的 AWS 客户端实例生效。

### AWSRegion
<a name="config-setting-awsregion"></a>

为未明确指定 AWS 区域的客户端配置默认区域。要在 `.config` 文件中设置区域，建议的方法是在 `aws` 元素中设置 `region` 属性值：

```
<aws region="us-west-2"/>
```

此外，在 `<appSettings>` 部分中设置 *AWSRegion* 关键字：

```
<add key="AWSRegion" value="us-west-2"/>
```

或者，要使用 适用于 .NET 的 AWS SDK API 设置区域，请设置[AWSConfigs。 AWSRegion](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Amazon/TAWSConfigs.html)财产:

```
AWSConfigs.AWSRegion = "us-west-2";
```

有关为特定区域创建 AWS 客户端的更多信息，请参阅[AWS 区域选择](net-dg-region-selection.md)。对此设置的更改仅对新的 AWS 客户端实例生效。

### AWSResponse正在记录
<a name="config-setting-awsresponselogging"></a>

配置开发工具包在什么情况下记录服务响应。可能的值包括：

** `Never` **  
从不记录服务响应。这是默认值。

** `Always` **  
始终记录服务响应。

** `OnError` **  
仅在出错时记录服务响应。

要在 `.config` 文件中设置服务日志记录配置，推荐的方法是在 `<logging>` 元素中设置 `logResponses` 属性值，该元素是 `<aws>` 元素的子元素：

```
<aws>
  <logging logResponses="OnError"/>
</aws>
```

或者，在以下`<appSettings>`部分中*AWSResponse设置 Logging* 密钥：

```
<add key="AWSResponseLogging" value="OnError"/>
```

或者，要使用 适用于 .NET 的 AWS SDK API 设置服务日志记录，请设置[AWSConfigs。 ResponseLogging](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Amazon/TAWSConfigs.html)将属性设置为[ResponseLoggingOption](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Amazon/TResponseLoggingOption.html)枚举的其中一个值：

```
AWSConfigs.ResponseLogging = ResponseLoggingOption.OnError;
```

对此设置的更改会立即生效。

### `AWS.DynamoDBContext.TableNamePrefix`
<a name="config-setting-aws-dynamodbcontext-tablenameprefix"></a>

配置 `TableNamePrefix` 将使用的默认 `DynamoDBContext` (在未手动配置的情况下)。

要在 `.config` 文件中设置表名前缀，建议的方法是在 `<dynamoDBContext>` 元素中设置 `tableNamePrefix` 属性值，该元素是 `<dynamoDB>` 元素 (这又是 `<aws>` 的子元素) 的子元素：

```
<dynamoDBContext tableNamePrefix="Test-"/>
```

此外，在 `<appSettings>` 部分中设置 `AWS.DynamoDBContext.TableNamePrefix` 关键字：

```
<add key="AWS.DynamoDBContext.TableNamePrefix" value="Test-"/>
```

或者，要使用 适用于 .NET 的 AWS SDK API 设置表名前缀，请设置 [AWSConfigs.Dynamo 属性 DBContext TableNamePrefix](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Amazon/TAWSConfigs.html)：

```
AWSConfigs.DynamoDBContextTableNamePrefix = "Test-";
```

对此设置的更改仅在新构建的 `DynamoDBContextConfig` 和 `DynamoDBContext` 实例中生效。

### `AWS.S3.UseSignatureVersion4`
<a name="config-setting-aws-s3-usesignatureversion4"></a>

配置 Amazon S3 客户端是否应使用签名版本 4 对请求签名。

要在 `.config` 文件中为 Amazon S3 设置签名版本 4 的签名，推荐的方法是在 `<s3>` 元素中设置 `useSignatureVersion4` 属性，该元素是 `<aws>` 元素的子元素：

```
<aws>
  <s3 useSignatureVersion4="true"/>
</aws>
```

此外，在 `<appSettings>` 部分中将 `AWS.S3.UseSignatureVersion4` 密钥设置为 `true`：

```
<add key="AWS.S3.UseSignatureVersion4" value="true"/>
```

或者，要使用 适用于 .NET 的 AWS SDK API 设置签名版本 4 签名，请将 [AWSConfigs.S3 UseSignatureVersion 4](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Amazon/TAWSConfigs.html) 属性设置为：`true`

```
AWSConfigs.S3UseSignatureVersion4 = true;
```

默认情况下，此设置是 `false`，但在某些情况下或者在某些区域中，默认会使用签名版本 4。当设置为 `true` 时，签名版本 4 将用于所有请求。对此设置的更改仅对新 Amazon S3 客户端实例生效。

### AWSEndpoint定义
<a name="config-setting-awsendpointdefinition"></a>

配置开发工具包是否应使用自定义配置文件，该文件定义区域和终端节点。

要在 `.config` 文件中设置终端节点定义文件，建议在 `<aws>` 元素中设置 `endpointDefinition` 属性值。

```
<aws endpointDefinition="c:\config\endpoints.json"/>
```

或者，你可以在以下`<appSettings>`部分中设置*AWSEndpoint定义*密钥：

```
<add key="AWSEndpointDefinition" value="c:\config\endpoints.json"/>
```

或者，要使用 适用于 .NET 的 AWS SDK API 设置端点定义文件，请设置[AWSConfigs。 EndpointDefinition](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Amazon/TAWSConfigs.html)财产:

```
AWSConfigs.EndpointDefinition = @"c:\config\endpoints.json";
```

如果没有提供文件名，则不使用自定义配置文件。对此设置的更改仅对新的 AWS 客户端实例生效。该`endpoints.json`文件可从中获得[https://github.com/aws/aws-sdk-net/blob/main/sdk/src/Core/endpoints.json](https://github.com/aws/aws-sdk-net/blob/main/sdk/src/Core/endpoints.json)。

### AWS 服务生成的终端节点
<a name="config-setting-service-generated-awsendpointdefinition"></a>

有些 AWS 服务会生成自己的终端节点，而不是使用区域终端节点。这些服务的客户端使用特定于该服务的服务 URL 以及您的资源。这些服务的两个例子是 Amazon CloudSearch 和 AWS IoT。以下示例演示如何获取这些服务的终端节点。

#### Amazon CloudSearch 终端节点示例
<a name="cs-endpoints-example"></a>

亚马逊 CloudSearch 客户端用于访问亚马逊 CloudSearch 配置服务。您可以使用 Amazon CloudSearch 配置服务创建、配置和管理搜索域。要创建搜索域，请创建一个[CreateDomainRequest](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/CloudSearch/TCreateDomainRequest.html)对象并提供该`DomainName`属性。使用请求[AmazonCloudSearchClient](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/CloudSearch/TCloudSearchClient.html)对象创建对象。调用 [CreateDomain](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/CloudSearch/MCloudSearchCreateDomainCreateDomainRequest.html) 方法。调用返回的[CreateDomainResponse](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/CloudSearch/TCreateDomainResponse.html)对象包含一个同时具有`DocService`和`SearchService`端点的`DomainStatus`属性。创建一个[AmazonCloudSearchDomainConfig](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/CloudSearchDomain/TCloudSearchDomainConfig.html)对象并使用它来初始化该[AmazonCloudSearchDomainClient](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/CloudSearchDomain/TCloudSearchDomainClient.html)类的`SearchService`实例`DocService`和实例。

```
// Create domain and retrieve DocService and SearchService endpoints
DomainStatus domainStatus;
using (var searchClient = new AmazonCloudSearchClient())
{
    var request = new CreateDomainRequest
    {
        DomainName = "testdomain"
    };
    domainStatus = searchClient.CreateDomain(request).DomainStatus;
    Console.WriteLine(domainStatus.DomainName + " created");
}

// Test the DocService endpoint
var docServiceConfig = new AmazonCloudSearchDomainConfig
{
    ServiceURL = "https://" + domainStatus.DocService.Endpoint
};
using (var domainDocService = new AmazonCloudSearchDomainClient(docServiceConfig))
{
    Console.WriteLine("Amazon CloudSearchDomain DocService client instantiated using the DocService endpoint");
    Console.WriteLine("DocService endpoint = " + domainStatus.DocService.Endpoint);

    using (var docStream = new FileStream(@"C:\doc_source\XMLFile4.xml", FileMode.Open))
    {
        var upload = new UploadDocumentsRequest
        {
            ContentType = ContentType.ApplicationXml,
            Documents = docStream
        };
        domainDocService.UploadDocuments(upload);
    }
}

// Test the SearchService endpoint
var searchServiceConfig = new AmazonCloudSearchDomainConfig
{
    ServiceURL = "https://" + domainStatus.SearchService.Endpoint
};
using (var domainSearchService = new AmazonCloudSearchDomainClient(searchServiceConfig))
{
    Console.WriteLine("Amazon CloudSearchDomain SearchService client instantiated using the SearchService endpoint");
    Console.WriteLine("SearchService endpoint = " + domainStatus.SearchService.Endpoint);

    var searchReq = new SearchRequest
    {
        Query = "Gambardella",
        Sort = "_score desc",
        QueryParser = QueryParser.Simple
    };
    var searchResp = domainSearchService.Search(searchReq);
}
```

#### AWS IoT 端点示例
<a name="iotlong-endpoints-example"></a>

要获取的终端节点 AWS IoT，请创建一个[AmazonIoTClient](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/IoT/TIoTClient.html)对象并调用[DescribeEndPoint](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/IoT/MIoTDescribeEndpointDescribeEndpointRequest.html)方法。返回的[DescribeEndPointResponse](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/IoT/TDescribeEndpointResponse.html)对象包含`EndpointAddress`。创建[AmazonIotDataConfig](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/IotData/TIotDataConfig.html)对象，设置`ServiceURL`属性，然后使用该对象实例化该类。[AmazonIotDataClient](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/IotData/TIotDataClient.html)

```
string iotEndpointAddress;
using (var iotClient = new AmazonIoTClient())
{
    var endPointResponse = iotClient.DescribeEndpoint();
    iotEndpointAddress = endPointResponse.EndpointAddress;
}

var ioTdocServiceConfig = new AmazonIotDataConfig
{
    ServiceURL = "https://" + iotEndpointAddress
};
using (var dataClient = new AmazonIotDataClient(ioTdocServiceConfig))
{
    Console.WriteLine("AWS IoTData client instantiated using the endpoint from the IotClient");
}
```