gpt4 book ai didi

wcf - HttpRequest.ServerVariables 使用 IIS7 在 WCF 中抛出 ArgumentException

转载 作者:行者123 更新时间:2023-12-04 16:50:13 34 4
gpt4 key购买 nike

我们有一个运行在 IIS7 中的 WCF (.NET 3.5 SP1) 服务,它被标记为允许 ASP.NET 兼容模式,因此我们可以访问 HttpContext.Current :

[AspNetCompatibilityRequirements(
RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]

但是,当尝试访问任何服务器变量时,它会抛出 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()

例如以下任何行抛出此异常:
ha = HttpContext.Current.Request.UserHostAddress;
ip = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
us = HttpContext.Current.Request.UserAgent;

这似乎是内部框架调用的结果,这意味着调用代码没有错。

据推测,我们的配置中有一些东西导致了这个问题,但我不知道是什么。有任何想法吗?或者任何想法我可以如何检索这三位数据(不幸的是,它们似乎没有被 WCF native 公开)。

最佳答案

原来问题是该操作标有...

[OperationContract(IsOneWay = true)]

...并且服务器变量在单向操作中不可用。

遗憾的是,异常(exception)并没有说明这种情况......

关于wcf - HttpRequest.ServerVariables 使用 IIS7 在 WCF 中抛出 ArgumentException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/650357/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com