【问题标题】:HttpListener.IsSupported is false on XP SP3HttpListener.IsSupported 在 XP SP3 上为假
【发布时间】:2012-04-05 09:53:29
【问题描述】:

我们正在尝试在 Windows XP SP3 系统上部署一个使用 HttpListener 类的简单 C#(框架 2.0)应用程序:应用程序在初始化时中止,因为 HttpListener.IsSupported 属性是 false

问题:什么会使HttpListener 在(合理地)最新的 XP 系统上不受支持?

可能重要的事情:

  • 用户不是其系统的管理员
  • 计算机上可能存在我不知道的安全策略(并且我不确定自己是否能够在自己不是管理员的情况下检查)

【问题讨论】:

    标签: c# .net httplistener


    【解决方案1】:

    好的,在后台 HttpListener 类调用

    [StructLayout(LayoutKind.Sequential)]
    internal struct HTTPAPI_VERSION
    {
        internal ushort HttpApiMajorVersion;
        internal ushort HttpApiMinorVersion;
    }
    
    [DllImport("httpapi.dll", CallingConvention=CallingConvention.StdCall, SetLastError=true, ExactSpelling=true)]
    internal static extern unsafe uint HttpInitialize(HTTPAPI_VERSION version, uint flags, void* pReserved);
    

    在 XP 上:

    version.HttpApiMajorVersion = 2; 
    version.HttpApiMinorVersion = 0;
    flags = 5;
    pReserved = null;
    

    这被描述为here。并设置bool supported = HttpInitialize(...) == 0;

    您可以尝试使用 PInvoke 直接调用它并检查返回的system error code

    【讨论】:

      【解决方案2】:

      一种可能性:XP Embedded 似乎不支持 HttpListener/http.sys,即使是 SP2 及更高版本。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-24
        • 2012-03-01
        • 2010-09-07
        • 2010-10-01
        • 1970-01-01
        • 2012-05-08
        相关资源
        最近更新 更多