当前位置:  开发笔记 > 后端 > 正文

ASP.NET(.asmx)webservices中的客户端IP地址

如何解决《ASP.NET(.asmx)webservices中的客户端IP地址》经验,为你挑选了1个好方法。

我在Silverlight中使用ASP.NET(.asmx)Web服务.由于无法在Silverlight中找到客户端IP地址,因此我必须在服务端登录.这些是我尝试过的一些方法:

Request.ServerVariables("REMOTE_HOST")
HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]
HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
Request.UserHostAddress()
Request.UserHostName()
string strHostName = Dns.GetHostName();
string clientIPAddress = Dns.GetHostAddresses(strHostName).GetValue(0).ToString();

以上所有方法在我的本地系统上运行正常,但是当我在生产服务器上发布我的服务时,它开始给出错误,

错误:对象引用未设置为对象的实例.堆栈跟踪:

在System.Web.Hosting.ISAPIWorkerRequestInProc.GetAdditionalServerVar(Int32索引)

在System.Web.Hosting.ISAPIWorkerRequestInProc.GetServerVariable(String name)

在System.Web.Hosting.ISAPIWorkerRequest.GetRemoteAddress()

在System.Web.HttpRequest.get_UserHostAddress()

John Saunder.. 5

你应该试着找出它的确切NullReferenceException来源.更改代码以了解某些内容可以返回null.例如,在

HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]

HttpContext.Current可以.Request返回null,或者.ServerVariables["REMOTE_ADDR"]可以返回null ,或者可以返回null.另外,在

string clientIPAddress = System.Net.Dns.GetHostAddresses(strHostName).GetValue(0).ToString();

GetHostAddresses(strHostName)可以返回null,或者.GetValue(0)可以返回null.

如果方法或属性可以返回null,那么在解除引用之前应检查null.例如,

IPAddress[] hostAddresses = System.Net.Dns.GetHostAddresses(strHostName);
string clientIPAddress;
if (hostAddresses != null)
{
    object value = hostAddresses.GetValue(0);
    if (value != null)
    {
        clientIPAddress = value.ToString();
    }
}

PS我不知道你为什么要用GetValue(0).请hostAddresses[0]改用.



1> John Saunder..:

你应该试着找出它的确切NullReferenceException来源.更改代码以了解某些内容可以返回null.例如,在

HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]

HttpContext.Current可以.Request返回null,或者.ServerVariables["REMOTE_ADDR"]可以返回null ,或者可以返回null.另外,在

string clientIPAddress = System.Net.Dns.GetHostAddresses(strHostName).GetValue(0).ToString();

GetHostAddresses(strHostName)可以返回null,或者.GetValue(0)可以返回null.

如果方法或属性可以返回null,那么在解除引用之前应检查null.例如,

IPAddress[] hostAddresses = System.Net.Dns.GetHostAddresses(strHostName);
string clientIPAddress;
if (hostAddresses != null)
{
    object value = hostAddresses.GetValue(0);
    if (value != null)
    {
        clientIPAddress = value.ToString();
    }
}

PS我不知道你为什么要用GetValue(0).请hostAddresses[0]改用.

推荐阅读
手机用户2502851955
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有