gpt4 book ai didi

asp.net - HttpRequestBase.UserHostAddress 抛出错误

转载 作者:行者123 更新时间:2023-12-03 02:36:11 25 4
gpt4 key购买 nike

我正在捕获有关访问我网站特定部分的用户的一些信息,但出现了一个奇怪的错误。我有一段代码执行以下操作。

string userIp = request.UserHostAddress; 

请求变量是一个 HttpRequestBase。有时这工作得很好,我得到了 IP - 其他时候它会抛出一个错误,我不知道如何防范。这是来 self 的错误日志。

“值不在预期范围内。在 System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32 errorCode, IntPtr errorInfo) 在 System.Web.Hosting.IIS7WorkerRequest.GetServerVariableInternal(字符串名称)”

似乎我第一次访问某个页面时效果很好,但如果我进行刷新或快速转到捕获相同变量的另一个页面,则会抛出错误。

最佳答案

我的记录器遇到了这个问题。我正在使用依赖注入(inject),我怀疑你也是如此。

就我而言,我收到此错误是因为我没有将记录器绑定(bind)到请求范围。因此,它处于请求之间并维护一些 HttpContext 属性,但在与 IIS 通信的属性上抛出异常。

由于我使用的是 Ninject,因此只需将 InRequestScope() 方法从 Ninject.Web.Common 命名空间添加到我的绑定(bind)即可。

简而言之:当某些属性被编码到 IIS 并且请求不再有效时,HttpContext 的过时实例似乎会引发此异常,被访问。

希望有帮助!

附: NLog 比您编写的任何记录器都要好。或者,如果您只是想要异常(exception),请加入 ELMAH。

关于asp.net - HttpRequestBase.UserHostAddress 抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9179217/

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