Hou*_*man 6 c# amazon-s3 amazon-web-services
所以我有一个C#控制台应用程序,可以将文件上传到s3存储.
当我从Visual Studio内部调试它时它工作正常,但是,当我构建.exe并从我的服务器运行它时,我得到错误,说它无法在App.config文件中找到Access Key.
System.ArgumentException: Access Key could not be found. Add an appsetting to your App.config with the name AWSAccessKey with a value of your access key.
Run Code Online (Sandbox Code Playgroud)
并且:
Amazon.Runtime.AmazonServiceException: Unable to reach credentials server
Run Code Online (Sandbox Code Playgroud)
第二个错误可能是由第一个引起的.
我将我的App.config文件放在与我正在运行的.exe相同的目录中,但这没有帮助.
还有什么我需要做的?
这是我的App.config文件:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings>
<add key="AWSAccessKey" value="key"/>
<add key="AWSSecretKey" value="secret"/>
<add key="AWSRegion" value="us-west-2" />
</appSettings>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="4.5.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
Run Code Online (Sandbox Code Playgroud)
此文件的构建操作是"嵌入式资源"我也尝试将其更改为"内容",但没有帮助.
一些可能相关或不相关的事情:
我正在使用(以及其他)ILMerge
合并AWSSDK.dll
到exe
那里,然后我通过命令行从Amazon EC2实例运行该文件.
当您查看“bin”目录时,.config 文件应命名为 yourprogram.exe.config。否则它不会找到配置值,并且它应该是内容文件,而不是嵌入资源。.config 文件必须始终存在并且与 EXE 位于同一目录中。