2

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

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

可能重要的事情:

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

2 回答 2

2

好的,在后台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 直接调用它并检查返回的系统错误代码

于 2012-04-05T10:01:34.380 回答
0

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

于 2012-04-05T15:40:29.580 回答