我们正在尝试HttpListener
在 Windows XP SP3 系统上部署一个使用类的简单 C#(框架 2.0)应用程序:应用程序在初始化时中止,因为HttpListener.IsSupported
属性是false
.
问题:什么会使HttpListener
(合理的)最新的 XP 系统不受支持?
可能重要的事情:
- 用户不是其系统的管理员
- 计算机上可能有我不知道的安全策略(而且我不确定我是否能够在自己不是管理员的情况下检查)
我们正在尝试HttpListener
在 Windows XP SP3 系统上部署一个使用类的简单 C#(框架 2.0)应用程序:应用程序在初始化时中止,因为HttpListener.IsSupported
属性是false
.
问题:什么会使HttpListener
(合理的)最新的 XP 系统不受支持?
可能重要的事情:
好的,在后台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 直接调用它并检查返回的系统错误代码
一种可能性:XP Embedded 似乎不支持 HttpListener/http.sys,即使是 SP2 及更高版本。