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).
Voilà pour l'attribut IsOneWay. :( –
Merci Greg, vous m'avez sauvé quelques heures – patelsan
est-il un moyen de détecter cela, donc je peux éviter d'utiliser les servervariables? – user230910