获取客户端数字格式(不是字符串格式)的最快方法是什么? 通用标签

我可以通过类似以下代码的方式对此进行计算 通用标签

基于Request.UserHostAddress字符串,但我希望IIS或ASP.NET对此进行预先计算,并将其隐藏在HttpContext中。

我错了吗?

有帮助吗?

解决方案

HttpContext似乎并没有比您已经看到的更具魔力:HttpRequest.UserHostAddress中的字符串值

一些背景信息:

HttpContext.Current.Request类型为System.Web.HttpRequest,在实例化时采用System.Web.HttpWorkerRequest作为参数。

HttpWorkerRequest是一个抽象类,通过托管诸如IIS的System.Web.Hosting.IIS7WorkerRequest这样的实现实例化,然后实现了GetRemoteAddress()的抽象方法HttpWorkerRequest,该方法由HttpRequest.UserHostAddress内部使用。

IIS7HttpWorkerRequest知道,REMOTE_ADDR是它需要读取的IIS属性,在传递请求上下文时经过了几层抽象之后,所有这些最终以在webengine.dll中调用MgdGetServerVariableW(IntPtr pHandler, string pszVarName, out IntPtr ppBuffer, out int pcchBufferSize);结尾,该脚本只写了一个字符串。将generaodicetagcode的长度转换为generaodicetagcode的长度,其中包含与pcchBufferSize相同的内容。

由于我怀疑HttpContext中是否还有其他部分获取与请求发送者相关的信息,因此我假设您将不得不继续自己的魔术转换,因此我在链接中有很多想法发表在评论中。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top