gpt4 book ai didi

c# - 如何关闭 `AmazonS3`对象中的自动代理检测?

转载 作者:太空狗 更新时间:2023-10-29 20:25:10 24 4
gpt4 key购买 nike

在应用程序启动后第一次使用 AmazonS3 对象时,会有大约 14 秒的较大延迟。所有后续调用都不会出现这种大的时间延迟。

我之前在其他与 HTTP 相关的类中遇到过这个确切的延迟问题,它是在有问题的类试图确定本地计算机的代理设置以及是否使用它们时引起的。

要阻止 WebClient 发生这种情况,您设置 WebClient.Proxy = null; 并且它不会尝试自动检测代理设置,但我无法确定了解如何禁用 AmazonS3 对象的代理检测功能。

我专门尝试将 ProxyHost 设置为 null:

_s3Client = AWSClientFactory.CreateAmazonS3Client(awsAccessKey, awsSecretAccessKey, new AmazonS3Config { ProxyHost = null });

这没用。我们目前正在使用 Amazon .NET SDK“v1.3.17.0”。

有没有办法关闭代理检测?

最佳答案

好问题 - 我自己没有尝试过,只分析了代码,但是 AmazonS3Config Class使用私有(private)方法 configureWebRequest(),它又依赖于 WebRequest Class处理实际的 HTTP 连接。现在,WebRequest 有一个 WebRequest.DefaultWebProxy Property ,它是 public static(即您可以在调用 CreateAmazonS3Client(()) 之前在您的应用程序中设置它:

The DefaultWebProxy property gets or sets the global proxy. The DefaultWebProxy property determines the default proxy that all WebRequest instances use if the request supports proxies and no proxy is set explicitly using the Proxy property. [emphasis mine]

您遇到的代理自动检测应该是由相应的 IE 行为引起的:

The DefaultWebProxy property reads proxy settings from the app.config file. If there is no config file, the current user's Internet Explorer (IE) proxy settings are used.

因此,我希望可以用与 WebClient.Proxy Property 类似的方式禁用它。你提到了,尽管是在类里面,正如最后一段所强烈暗示的那样:

If the DefaultWebProxy property is set to null, all subsequent instances of the WebRequest class created by the Create or CreateDefault methods do not have a proxy. [emphasis mine]


由 blexandre 添加

这个答案的示例代码是

System.Net.WebRequest.DefaultWebProxy = null;
_s3Client = AWSClientFactory.CreateAmazonS3Client(awsAccessKey, awsSecretAccessKey);

注意这将禁用每个网络请求的代理,_client 是使用它创建的,因此这样做是安全的,但如果您可能有来自 WebRequest 类的更多请求

关于c# - 如何关闭 `AmazonS3`对象中的自动代理检测?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8971210/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com