1

mono を使用して DynamoDb に接続するコンソール アプリを実行しようとしていますが、Visual Studio からは正常に動作しますが、プログラムをコンパイルして Ubuntu サーバーで実行すると、次の出力が得られます。

[dev@dev Debug]$ mono Server.exe
Attempting call
Missing method .ctor in assembly /usr/local/lib/mono/gac/System/4.0.0.0__b77a5c561934e089/System.dll, type Mono.Security.Protocol.Tls.CertificateValidationCallback2
Missing method .ctor in assembly /usr/local/lib/mono/gac/System/4.0.0.0__b77a5c561934e089/System.dll, type Mono.Security.Protocol.Tls.CertificateValidationCallback2

Unhandled Exception:
Amazon.Runtime.AmazonServiceException: The request timed out ---> System.Net.WebException: The request timed out
  at System.Net.HttpWebRequest.GetRequestStream () [0x00000] in <filename unknown>:0
  at Amazon.Runtime.AmazonWebServiceClient.getRequestStreamCallback (IAsyncResult result) [0x00000] in <filename unknown>:0
  --- End of inner exception stack trace ---
  at Amazon.Runtime.AmazonWebServiceClient.handleHttpWebErrorResponse (Amazon.Runtime.Internal.AsyncResult asyncResult, System.Net.WebException we) [0x00000] in <filename unknown>:0
  at Amazon.Runtime.AmazonWebServiceClient.getRequestStreamCallback (IAsyncResult result) [0x00000] in <filename unknown>:0
[ERROR] FATAL UNHANDLED EXCEPTION: Amazon.Runtime.AmazonServiceException: The request timed out ---> System.Net.WebException: The request timed out
  at System.Net.HttpWebRequest.GetRequestStream () [0x00000] in <filename unknown>:0
  at Amazon.Runtime.AmazonWebServiceClient.getRequestStreamCallback (IAsyncResult result) [0x00000] in <filename unknown>:0
  --- End of inner exception stack trace ---
  at Amazon.Runtime.AmazonWebServiceClient.handleHttpWebErrorResponse (Amazon.Runtime.Internal.AsyncResult asyncResult, System.Net.WebException we) [0x00000] in <filename unknown>:0
  at Amazon.Runtime.AmazonWebServiceClient.getRequestStreamCallback (IAsyncResult result) [0x00000] in <filename unknown>:0

これは私が実行していたコードです

using Amazon.DynamoDBv2;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;

namespace Server
{
    class Program
    {
        static void Main(string[] args)
        {
            // adding this has no affect, this is never even called
            ServicePointManager.ServerCertificateValidationCallback = (sender, cert, chain, error) => true;

            using (var ddb = new AmazonDynamoDBClient(DynamoServer.Region))                                                                                                                                                            egion))
            {
                Console.WriteLine("Attempting call");
                Console.WriteLine(ddb.ListTables());    
            }
        }
    }
}

Mono 3.0.12 と 2.10.8 の両方で試しましたが、どちらも同じエラーが発生しました。AWSSDK 1.5.26.3 を使用しています。Server.exe ターゲット .net 4.0 のビルドに使用したプロジェクトで、単純に xbuild Server.csproj を実行してビルドしました

ssl と Missing method メッセージに関係があると思いますが、これをさらにデバッグするための提案や方法はありますか? この同じエラーが以前に発生したというレポートが見つからないようです。

4

1 に答える 1

2

そして、これを投稿した直後に、問題につながるこの古いバグを見つけました

この問題は、Thrift の要件である古い Mono.Security.dll を含めたことが原因でした。その古いdllを削除することで、エラーなしで実行できました

于 2013-07-17T06:01:49.083 に答える