C# AWS.NET PutObjectRequest使用了错误的主机

C# AWS.NET PutObjectRequest使用了错误的主机,c#,asp.net,amazon-web-services,amazon-s3,runtime-error,C#,Asp.net,Amazon Web Services,Amazon S3,Runtime Error,我正在使用AmazonWeb服务的.NET库来实现一个将图像上传到AmazonS3存储桶的应用程序。它用于ASP.NET 4.5应用程序的内部服务。NuGet包名为AWSSDK,其版本是最新的(截至编写时)稳定版本:2.3.54.2 当我尝试在PutObjectRequest对象上使用PutObject方法(上载图像blob)时,它抛出异常并抱怨主机名错误 var accessKey = Config.GetValue("AWSAccessKey"); var secretKey = Confi

我正在使用AmazonWeb服务的.NET库来实现一个将图像上传到AmazonS3存储桶的应用程序。它用于ASP.NET 4.5应用程序的内部服务。NuGet包名为AWSSDK,其版本是最新的(截至编写时)稳定版本:2.3.54.2

当我尝试在PutObjectRequest对象上使用PutObject方法(上载图像blob)时,它抛出异常并抱怨主机名错误

var accessKey = Config.GetValue("AWSAccessKey");
var secretKey = Config.GetValue("AWSSecretKey");
using (var client = new AmazonS3Client(accessKey, secretKey, config))
{
            var request = new PutObjectRequest();
            request.BucketName = Config.GetValue("PublicBucket");
            request.Key = newFileName;
            request.InputStream = resizedImage;
            request.AutoCloseStream = false;
            using (var uploadTaskResult = client.PutObject(request))
            {
                using (var uploadStream = uploadTaskResult.ResponseStream)
                {
                    uploadStream.Seek(0, SeekOrigin.Begin);
                    var resultStr = new StreamReader(uploadStream).ReadToEnd();
                }
            }
}
例外情况详情如下:

Fatal unhandled exception in Web API component: System.Net.WebException: The remote name could not be resolved: 'images.ourcompany.com.http'
   at System.Net.HttpWebRequest.GetRequestStream(TransportContext& context)
   at System.Net.HttpWebRequest.GetRequestStream()
   at Amazon.S3.AmazonS3Client.getRequestStreamCallback[T](IAsyncResult result)
   at Amazon.S3.AmazonS3Client.endOperation[T](IAsyncResult result)
   at Amazon.S3.AmazonS3Client.EndPutObject(IAsyncResult asyncResult)
   at Tracks.Application.Services.Bp.BpTemplateService.UploadImage(Byte[] image, String fileName) in ...

我曾尝试在VS中单步调试代码,但AWSSDK没有调试符号。应该注意的是,远程主机名(或者我认为亚马逊称之为bucket名)是images.ourcompany.com(不是我们真正的公司名称!)。我已经检查了
Config.GetValue(“PublicBucket”)
的值,它确实是images.ourcompany.com。在这个阶段,我已经用尽了我对Amazon S3的有限知识,对于引发异常的原因没有任何理论。

我认为您必须添加区域端点或/并设置ServiceUrl以建立与AmazonS3的连接。请检查下面类似的问题:


你从哪里得到那个服务URL的?
 AmazonS3Config cfg = new AmazonS3Config();  
    cfg.RegionEndpoint = Amazon.RegionEndpoint.SAEast1;//your region Endpoint
    string butcketName = "yourBucketName";
    AmazonS3Client s3Client = new AmazonS3Client("your access key",
     "your secret key", cfg);
     PutObjectRequest request = new PutObjectRequest()
                    {
                        BucketName = _bucket,
                        InputStream = stream,
                        Key = fullName
                    };

                    s3Client.PutObject(request);

or

    AmazonS3Config asConfig = new AmazonS3Config()
    {
        ServiceURL = "http://irisdb.s3-ap-southeast2.amazonaws.com/",
        RegionEndpoint = Amazon.RegionEndpoint.APSoutheast2
    };