2009-03-16 10 views
4

Nous avons un service WCF (.NET 3.5 SP1) en cours d'exécution dans IIS7, qui est marqué pour permettre le mode de compatibilité ASP.NET afin que nous puissions accéder HttpContext.Current:HttpRequest.ServerVariables jette ArgumentException dans WCF avec IIS7

[AspNetCompatibilityRequirements(
    RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] 

Cependant, lorsque vous essayez d'accéder à une variable de serveur, il jette un ArgumentException:

System.ArgumentException: Value does not fall within the expected range. 
    at System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32 errorCode, IntPtr errorInfo) 
    at System.Web.Hosting.IIS7WorkerRequest.GetServerVariableInternal(String name) 
    at System.Web.Hosting.IIS7WorkerRequest.GetServerVariable(String name) 
    at System.Web.Hosting.IIS7WorkerRequest.GetRemoteAddress() 
    at System.Web.HttpRequest.get_UserHostAddress() 

par exemple Une des lignes suivantes jettent cette exception:

ha = HttpContext.Current.Request.UserHostAddress; 
ip = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; 
us = HttpContext.Current.Request.UserAgent; 

Cela semble être le résultat d'un appel-cadre interne, ce qui signifie que le code d'appel ne sont pas en faute.

Vraisemblablement, il y a quelque chose dans notre configuration qui cause ce problème, mais je ne sais pas quoi. Des idées? Ou des idées sur la façon dont je peux récupérer ces trois bits de données (ils ne semblent pas être exposés nativement par WCF, malheureusement).

Répondre

11

Transforme le problème est que l'opération est marquée par ...

[OperationContract(IsOneWay = true)] 

... et que les variables de serveur ne sont pas disponibles dans les opérations à sens unique. Dommage que l'exception ne dise rien à cet effet ...

+0

Voilà pour l'attribut IsOneWay. :( –

+0

Merci Greg, vous m'avez sauvé quelques heures – patelsan

+0

est-il un moyen de détecter cela, donc je peux éviter d'utiliser les servervariables? – user230910

Questions connexes