当使用AmazonS3
应用程序启动后第一次调用对象时,有大约 14 秒的较大延迟。所有后续调用都不会出现这种大的时间延迟。
我之前在其他 HTTP 相关类中遇到过这个确切的延迟问题,这是当相关类尝试确定本地计算机的代理设置以及是否使用它们时引起的。
为了阻止这种情况发生WebClient
,你设置WebClient.Proxy = null;
它不会尝试自动检测代理设置,但我不知道如何禁用代理检测功能AmazonS3
object.
我专门尝试过设置ProxyHost
to null
:
_s3Client = AWSClientFactory.CreateAmazonS3Client(awsAccessKey, awsSecretAccessKey, new AmazonS3Config { ProxyHost = null });
这不起作用。我们目前使用 Amazon .NET SDK“v1.3.17.0”。
有没有办法关闭代理检测?
好问题 - 我自己没有尝试过,只分析了代码,但是AmazonS3Config 类 http://docs.amazonwebservices.com/sdkfornet/latest/apidocs/html/T_Amazon_S3_AmazonS3Config.htm使用私有方法configureWebRequest()
,这又依赖于网络请求类 http://msdn.microsoft.com/en-us/library/system.net.webrequest.aspx处理实际的 HTTP 连接。现在,WebRequest
has a WebRequest.DefaultWebProxy 属性 http://msdn.microsoft.com/en-us/library/system.net.webrequest.defaultwebproxy.aspx,即公共静态(即您可以在调用之前在应用程序中设置它CreateAmazonS3Client(()
) :
DefaultWebProxy 属性获取或设置全局代理。这
DefaultWebProxy 属性决定默认代理全部
WebRequest 实例如果请求支持代理且不支持代理,则使用
使用 Proxy 属性显式设置。[强调我的]
您遇到的代理自动检测据说是由相应的 IE 行为引起的:
DefaultWebProxy 属性从 app.config 读取代理设置
文件。如果没有配置文件,则当前用户的 Internet Explorer
(IE) 使用代理设置。
因此,我希望可以以与WebClient.Proxy 属性 http://msdn.microsoft.com/en-us/library/system.net.webclient.proxy.aspx你提到,尽管是在班级层面,正如最后一段确实强烈建议的那样:
如果 DefaultWebProxy 属性设置为 null,所有后续的
WebRequest 类的实例由创建或创建
创建默认方法没有代理. [强调我的]
添加者: blendre
这个答案的示例代码是
System.Net.WebRequest.DefaultWebProxy = null;
_s3Client = AWSClientFactory.CreateAmazonS3Client(awsAccessKey, awsSecretAccessKey);
Note这将禁用每个网络请求的代理,_client
是使用它创建的,因此执行此操作是安全的,但如果您可能有更多请求待处理,请小心WebRequest
class
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)