2012-04-05 3 views
2

Nous essayons de déployer une simple application C# (framework 2.0) qui utilise la classe HttpListener sur un système Windows XP SP3: l'application s'interrompt à l'initialisation car la propriété HttpListener.IsSupported est false.HttpListener.IsSupported est faux sur XP SP3

Question: Qu'est-ce qui pourrait rendre HttpListener non supporté par un système XP (raisonnablement) à jour?

choses qui pourraient la matière:

  • L'utilisateur est pas administrateur sur son système
  • Il peut y avoir des politiques de sécurité sur l'ordinateur que je ne suis pas au courant (et que je ne suis pas sûr que je suis en mesure de vérifier sans être moi-même administrateur)

Répondre

2

d'accord, sous le capot HttpListener appelle la classe

[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); 

Sur XP:

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

Ce qui est décrit here. Et définit bool supported = HttpInitialize(...) == 0;

Vous pouvez essayer d'appeler à l'aide de PInvoke et vérifier directement system error code retourné

0

Une possibilité: XP Embedded ne semble pas soutenir HttpListener/http.sys même avec SP2 et versions ultérieures.

Questions connexes