2016-12-11 10 views
1

Grapevineを使用して単純なC#RESTサーバーを実装しようとしています。私はOSXでXamarin Studioを使用しています。私はGrapevine 4.0.0.195をパッケージとして取り出しました。私はhttps://sukona.github.io/Grapevine/に与えられた例を実行しようとすると、単純なGrapevineサーバーの例でHttpListener型をロードできません

はしかし、私はこのエラーを取得する:

System.TypeLoadException: Could not load type 'Grapevine.Interfaces.Server.HttpListener' from assembly 'Grapevine, Version=4.0.0.195, Culture=neutral, PublicKeyToken=null'. at Grapevine.Server.RestServer..ctor() [0x00006] in <5da3c1fcf3364795b3df98bfc8b714aa>:0 at TestServer.MainClass.Main (System.String[] args) [0x0000b] in /Users/blah/Projects/Test/TestServer/Program.cs:12

私はグレープバインアセンブリを検査しHttpListenerが実際に存在していることがわかりました。

は、ここに私のProgram.csです:私も同じ問題に遭遇したとし、(ところで、あなたの素晴らしい作品をありがとうございました!)スコットOffenと同じ応答を発見しExtendedProtectionSelectorについて言及

using System; 
using Grapevine.Server; 

namespace TestServer 
{ 
    public sealed class MainClass 
    { 
     public static void Main(string[] args) 
     { 
      Console.WriteLine("Hello World!"); 

      using (var server = new RestServer()) 
      { 
       server.Start(); 
       Console.ReadLine(); 
       server.Stop(); 
      } 
     } 
    } 
} 
+0

以前はXamarin Studioを使用していませんでした。私はそれをMacにインストールし、これを複製できるかどうかを確認します。 –

+0

私が知ることから、Xamarinは 'System.Net.HttpListener'の' ExtendedProtectionSelector'プロパティをサポートしていません。 2017年の最初のマイルストーンはマルチプラットフォームのサポートであり、これが我々に対処する必要があるかもしれません。一方で、この質問を[Gitter room](https://gitter.im/sukona/Grapevine)で聞いてください.GrapevineをMonoで使用している人がいます。 –

+0

私はこれに関する問題を記録しました[here](https://github.com/sukona/Grapevine/issues/157) –

答えて

1

だから私は戻って彼の以前のバージョンに行き、私があればそれは文句を言わない箱から出してすぐに動作のいずれか(私は、IOSのために構築された、IDKのブドウバージョン3.1.0

を使用してxamarinにブドウの作品を作ることができましたあなたはアンドロイドのために同じ問題にぶつかるでしょう)。ロギングに関するいくつかのエラーを表示するので、ロギングについてのコードでCtrl + Fをどこでも実行し、変更しました。私はEventLogger.csのすべてをコメントアウトしました。

RESTServerでは、エラーを報告するEventLoggerがあったところで、デバッグ時にエラーを説明するConsole.Writelineに変更しました。

幸運を祈る!

+0

何もありません!ところで、 'EventLogger'は4.0で廃止されました。すぐにオプションのプロバイダパターンに置き換えられていますので、好きなようにロギングを管理することができます。この回避策を提供していただきありがとうございます。 –

関連する問題