无法在简单的 Grapevine 服务器示例中加载类型 HttpListener

Posted

技术标签:

【中文标题】无法在简单的 Grapevine 服务器示例中加载类型 HttpListener【英文标题】:Cannot load type HttpListener in simple Grapevine server example 【发布时间】:2017-04-26 12:07:55 【问题描述】:

我正在尝试使用 Grapevine 来实现一个简单的 C# REST 服务器。我在 OSX 上使用 Xamarin Studio。我把 Grapevine 4.0.0.195 作为一个包拉出来了。

但是,当我尝试运行https://sukona.github.io/Grapevine/ 上给出的示例时,我收到此错误:

System.TypeLoadException:无法加载类型 来自程序集“Grapevine”的“Grapevine.Interfaces.Server.HttpListener”, 版本=4.0.0.195,文化=中性,PublicKeyToken=null'。在 Grapevine.Server.RestServer..ctor () [0x00006] 在 :0 在 TestServer.MainClass.Main (System.String[] args) [0x0000b] 在 /Users/blah/Projects/Test/TestServer/Program.cs:12

我检查了 Grapevine 组件,发现 HttpListener 确实存在。

这是我的Program.cs

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();
            
        
    

【问题讨论】:

我以前没有使用过 Xamarin Studio。我会在 Mac 上安装它,看看能不能复制它。 据我所知,Xamarin 缺乏对System.Net.HttpListenerExtendedProtectionSelector 属性的支持。 2017 年的第一个里程碑是多平台支持,这可能是我们需要解决的问题。同时,请在我们的Gitter room 中提出这个问题,因为我知道那里有些人正在将 Grapevine 与 Mono 一起使用。 我已经记录了这个here的问题 现在有一个 Grapevine 4.1 的 alpha 版本应该可以为您解决这个问题。 【参考方案1】:

我也遇到了同样的问题,并发现了与 Scott Offen 提到的关于 ExtendedProtectionSelector 的相同响应(顺便说一句,感谢您的出色工作!)。

所以我回到他以前的版本,我能够使用葡萄藤版本 3.1.0 在 xamarin 中制作葡萄藤

它也不能开箱即用(我是为 ios 构建的,如果你在 android 上遇到同样的问题,我是为 ios 构建的)。它会给你一些关于日志记录的错误,所以我在他关于日志记录的代码中到处都做了 Ctrl+F 并更改了它。我几乎注释掉了 EventLogger.cs 中的所有内容

然后在RESTServer中,凡是有EventLogger报错的地方,我都干脆改成Console.Writeline来描述调试时的错误。

祝你好运!

【讨论】:

聊胜于无!顺便说一句,EventLogger 在 4.0 中消失了,很快就会被可选的提供者模式所取代,因此您可以随意管理日志记录。感谢您提供此解决方法。

以上是关于无法在简单的 Grapevine 服务器示例中加载类型 HttpListener的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Allegro 中加载字体

无法在 RemoteViewsFactory 中加载多个图像

无法在 JavaFX 中加载 FXML 文件

无法在其他类组件中加载 React 类组件

无法在标记为 @SpringBootTest 的组件测试中加载 @Configuration 类

无法在 SharePoint 页面中加载 Web 部件