アマゾン クラウドでシンプルな Web アプリケーションをホストしました。ホストされた Web アプリケーションでバケット オブジェクトを読み取る際に問題に直面しています。
GetObjectResponse レスポンス = client.GetObject(リクエスト);
エラー: 再試行の最大回数に達しました: 3
MaxErrorRetry = 5 を増やしてみましたが、まだ問題が発生しています
*誰かがここで私を助けることができれば、私はそれを大いに感謝します:) *
以下はソースコードです:
public class HomeController : Controller
{
static string keyName = "";
static AmazonS3 client;
public ActionResult Index()
{
ViewBag.Message = "Welcome to ASP.NET MVC!";
string data = readCloudData("filename.txt");
ViewBag.Message = data;
return View();
}
public ActionResult About()
{
return View();
}
public string readCloudData(string objName)
{
string data = string.Empty;
if (checkRequiredFields(objName))
{
NameValueCollection appConfig = ConfigurationManager.AppSettings;
string accessKeyID = appConfig["AWSAccessKey"];
string secretAccessKeyID = appConfig["AWSSecretKey"];
string bucketName = appConfig["AWSBucketName"];
try
{
data = ReadingAnObject(accessKeyID, secretAccessKeyID, bucketName, objName);
}
catch (AmazonS3Exception s3Exception)
{
return "Error in reading file!";
}
}
data = data.Trim();
return data;
}
static string ReadingAnObject(string accessKeyID, string secretAccessKeyID, string bucketName, string keyName)
{
string responseBody = "";
using (client = Amazon.AWSClientFactory.CreateAmazonS3Client(
accessKeyID, secretAccessKeyID))
{
GetObjectRequest request = new GetObjectRequest()
.WithBucketName(bucketName).WithKey(keyName);
try
{
using (GetObjectResponse response = client.GetObject(request))
{
using (Stream responseStream = response.ResponseStream)
{
using (StreamReader reader =
new StreamReader(responseStream))
{
responseBody = reader.ReadToEnd();
}
}
}
}
catch (AmazonS3Exception s3Exception)
{
return s3Exception.Message;
}
}
return responseBody;
}
static bool checkRequiredFields(string keyName)
{
NameValueCollection appConfig = ConfigurationManager.AppSettings;
if (string.IsNullOrEmpty(appConfig["AWSAccessKey"]))
{
return false;
}
if (string.IsNullOrEmpty(appConfig["AWSSecretKey"]))
{
return false;
}
if (string.IsNullOrEmpty(appConfig["AWSBucketName"]))
{
return false;
}
if (string.IsNullOrEmpty(keyName))
{
return false;
}
return true;
}
}