我们正在尝试在 Windows XP SP3 系统上部署一个使用 HttpListener
类的简单 C#(框架 2.0)应用程序:该应用程序在初始化时中止,因为 HttpListener.IsSupported
属性为false
。
问题:什么原因会导致(相当)最新的 XP 系统不支持 HttpListener
?
可能重要的事情:
- 用户不是其系统的管理员
- 计算机上可能存在我不知道的安全策略(并且我不确定自己是否能够在不成为管理员的情况下进行检查)
最佳答案
好的,在幕后 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返回
关于c# - HttpListener.IsSupported 在 XP SP3 上为 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10026387/