访问SDK Store中的AWS凭证时遇到一些麻烦,但这似乎只是在IIS下运行时的一个问题。如果我通过使用ReSharper调用NUnit测试来达到相同的代码,则依赖项注入(inject)将起作用,并且S3客户端能够进行身份验证。
IAmazonS3 s3Client = new AmazonS3Client();
还有其他人遇到这个问题吗?您如何使依赖项注入(inject)起作用?
[编辑]
已建议将凭据文件方法与IIS一起使用,因为SDK存储会为每个用户以不同的方式加密凭据。如果我在我不想做的appSettings中对路径进行硬编码,则只能使凭据文件起作用。
除了以下路径外,SDK还将在哪里寻找凭证文件?
C:\Users\<IIS_app_name>\.aws\credentials
C:\Users\<my_domain_user>\.aws\credentials
最佳答案
在Pavel的回答下回答了该问题,但是我将发布一个答案,以使信息更易于使用。您可以在webLocal.config中指定凭据文件的位置(如果没有它,我将无法使其工作)。部署应用程序后,凭据文件位置将是无效路径,并且SDK将故障转移到对EC2实例使用IAM角色。
webLocal.config
<?xml version="1.0"?>
<appSettings>
<!-- AWS -->
<add key="AWSProfilesLocation" value="C:\Users\<IIS_app_name>\.aws\credentials" />
<add key="AWSRegion" value="us-west-2" />
<add key="S3Bucket" value="bucket." />
</appSettings>
当实例化不带参数的客户端时,依赖项注入(inject)将起作用。
IAmazonS3 s3Client = new AmazonS3Client();
关于c# - 适用于.NET的AWS开发工具包无法使用IIS访问凭据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25560545/