2012-04-05 21 views
2

Wir versuchen, eine einfache C# (Framework 2.0) -Anwendung bereitzustellen, die HttpListener Klasse auf einem Windows XP SP3-System verwendet: Die Anwendung bricht bei der Initialisierung ab, weil HttpListener.IsSupported Eigenschaft false ist.HttpListener.IsSupported ist falsch unter XP SP3

Frage: was könnte HttpListener auf einem (einigermaßen) aktuellen XP-System nicht unterstützen?

Dinge, die Angelegenheit könnte:

  • Benutzer ist kein Administrator auf seinem System
  • Es können Sicherheitsrichtlinien auf dem Computer sein, die ich bin mir nicht bewusst (und die ich nicht sicher bin, ich bin fähiger Verwalter ich selbst zu sein)

Antwort

2

okay, unter der Haube HttpListener Klasse ruft

[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); 
0 zu überprüfen, ohne

Auf XP:

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

Welche here beschrieben. Und setzt bool supported = HttpInitialize(...) == 0;

Sie können versuchen, es zu nennen direkt PInvoke und überprüfen system error code

zurück
0

Eine Möglichkeit: XP Embedded scheint nicht Httplistener/http.sys auch mit SP2 und später zu unterstützen.