2012-04-05 89 views
2

我們正試圖部署一個簡單的C#(框架2.0)應用程序,該應用程序在Windows XP SP3系統上使用HttpListener類:應用程序在初始化時中止,因爲HttpListener.IsSupported屬性爲falseXP SP3上的HttpListener.IsSupported爲false

問:什麼可以讓HttpListener不支持的一個(合理的)上的最新XP系統上?

事情會重要:

  • 用戶不是管理員將其系統上
  • 有可能是在計算機上的安全政策,我不知道(和它的我不知道我能夠檢查而不被管理員自己)

回答

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:這是描述here

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

。並設置bool supported = HttpInitialize(...) == 0;

您可以嘗試直接調用它使用的PInvoke和檢查system error code回到

0

一種可能性:XP嵌入式似乎並不能夠支持HttpListener/HTTP.SYS即使SP2及更高版本。

相關問題