用于C#的AWS sdk,在哪里放置App.config文件?

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.dllexe那里,然后我通过命令行从Amazon EC2实例运行该文件.

vcs*_*nes 2

当您查看“bin”目录时,.config 文件应命名为 yourprogram.exe.config。否则它不会找到配置值,并且它应该是内容文件,而不是嵌入资源。.config 文件必须始终存在并且与 EXE 位于同一目录中。