【问题标题】:System.PlatformNotSupported exception with service stackSystem.PlatformNotSupported 异常与服务堆栈
【发布时间】:2015-12-31 03:16:15
【问题描述】:

我正在尝试运行服务堆栈应用程序,当部署在另一个机器上时,它在我的开发机器上运行良好,我得到 System.PlatformNotSupported 异常。 下面的堆栈跟踪:

未处理的异常:System.PlatformNotSupportedException:此平台不支持操作。 在 System.Net.HttpListener..ctor() 在 ServiceStack.Host.HttpListener.HttpListenerBase.Start(IEnumerable`1 urlBases,WaitCallback listenCallback) 在 ServiceStack.Host.HttpListener.HttpListenerBase.Start(字符串 urlBase) 在 ExcaliburAppHost.Program.Main(String[] args)

我正在尝试构建一个具有自托管功能的 Restful 应用程序(另一个盒子上不支持 IIS)。

var listeningOn = args.Length == 0 ? "http://*:8090/" : args[0]; var appHost = new AppHost() .Init() .Start(listeningOn);

AppHost().Start()方法发生错误

【问题讨论】:

  • 我也尝试将 System.Web.Http.dll 包含在构建中。
  • 是否可以将 Apache 或 NGinx 或任何其他服务器用作任何 .Net Web Api 项目的 HTTP 服务器。我正在处理必须避免 IIS 的环境

标签: asp.net-web-api servicestack httplistener


【解决方案1】:

如果您有任何非托管 .dll,例如sqlite3.dll 您可能需要将项目的 Platform Target 设置为 x86

您也可以尝试以管理员/sudo 身份运行控制台应用程序,以防出现权限问题。

【讨论】:

  • 嗨,mythz,我在 Windows 恢复环境中运行我的应用程序,这是一个自定义构建的 Win PE 映像,完全支持 .net。但是,我没有在 win PE 内工作的 wifi/网络连接。我所有的 DLL 都是 x64 编译并在本地复制的。
  • @rocky 测试看看它是否真的支持running a basic .NET HttpListener。如果没有,您将无法使用基于它构建的 ServiceStack SelfHost。
  • 对 HttpListener 的支持是该环境中的一个问题,因此我在为 HttpListener() 创建实例时开始在调用中查找方法。我发现调用以下不安全代码正在返回系统状态代码 1060 [DllImport("httpapi.dll", ExactSpelling = true, CallingConvention = CallingConvention.StdCall, SetLastError = true)] internal static extern unsafe uint HttpInitialize(HTTPAPI_VERSION version, uint flags, void* pReserved); 1060 状态代码的含义是 ERROR_SERVICE_DOES_NOT_EXIST msdn.microsoft.com/en-us/library/windows/desktop/…
  • 您知道我们如何在平台上安装 http API 驱动程序(http.sys 驱动程序)吗?我在我的 windows 7 和 windows 10 上看到它已经安装,但是在自定义 windows PE(由我们创建)上它不可用,所以如果我们知道驱动程序,我们可以将它注入我们的自定义 PE 映像并尝试它出去。谢谢
  • @rocky 不认为这是可能的,AFAIK 它内置在 Windows 中,要获得新的 http.sys 内核模式驱动程序,您需要升级操作系统。
【解决方案2】:

面对异常“System.PlatformNotSupportedException:ServiceController 启用操作和访问 Windows 服务,它不适用于其他操作系统。” - 在我的情况下,我必须将“System.ServiceProcess.ServiceController”NuGet 包添加到我的 .net 5 Worker Service 项目中,问题就消失了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-26
    • 2011-04-14
    • 2012-10-15
    • 2023-02-17
    • 2010-11-27
    • 2011-01-05
    相关资源
    最近更新 更多