C# 检查IP地址是否匹配

C# 检查IP地址是否匹配,c#,asp.net,C#,Asp.net,我有一个包含许多Ip地址的xml。像这样: <settings> <ipaddresses> <ipaddress>1288</ipaddress> <ipaddress>1999</ipaddress> <ipaddress>555</ipaddress> <ipaddress>88888</ipaddress> </ipaddr

我有一个包含许多Ip地址的xml。像这样:

<settings>
  <ipaddresses>
    <ipaddress>1288</ipaddress>
    <ipaddress>1999</ipaddress>
    <ipaddress>555</ipaddress>
    <ipaddress>88888</ipaddress>
  </ipaddresses>
</settings>

1288
1999
555
88888
现在我想检查其中一个Ip地址是否与pc的Ip地址匹配,这样用户就可以看到产品

如果XML中的一个IP地址与电脑的IP地址不匹配,则必须返回错误消息。我试着这样做:

 XDocument doc = XDocument.Parse(product.AuthenticationSettings);
            var IpAddress = doc.Descendants("ipaddress");
            foreach (var IpAddresses in IpAddress)
            {
                bool IppAddressMatch = false;

                if (GetClientIp() == IpAddresses.Value)
                {
                    IppAddressMatch = true;
                }

                if (GetClientIp() != IpAddresses.Value)
                {
                    // log message
                   return Content("<h1>403 Forbidden</h1>", "text/html");


                }
            }
XDocument doc=XDocument.Parse(product.AuthenticationSettings);
var IpAddress=文档子体(“IpAddress”);
foreach(IP地址中的变量IP地址)
{
bool-IppAddressMatch=false;
if(GetClientIp()==IpAddresses.Value)
{
IppAddressMatch=true;
}
如果(GetClientIp()!=IpAddresses.Value)
{
//日志消息
返回内容(“403禁止”、“文本/html”);
}
}
但我得到了这个错误:

错误6警告为错误:已分配变量“IppAddressMatch” 但它的价值从未被使用过


您有两个选项来解决此问题:

  • 删除IppAddressMatch变量,因为您没有使用它
  • 更改“将警告视为错误”选项。看

  • 代码可能类似于:

    XDocument doc = XDocument.Parse(product.AuthenticationSettings);
    var IpAddress = doc.Descendants("ipaddress");
    
    bool IppAddressMatch = false;
    
    foreach (var IpAddresses in IpAddress)
    {
        if (GetClientIp() == IpAddresses.Value)
        {
            IppAddressMatch = true;
            break;
        }
    }
    
    if (!IppAddressMatch)
    {
        // log message
        return Content("<h1>403 Forbidden</h1>", "text/html");
    }
    
    XDocument doc=XDocument.Parse(product.AuthenticationSettings);
    var IpAddress=文档子体(“IpAddress”);
    bool-IppAddressMatch=false;
    foreach(IP地址中的变量IP地址)
    {
    if(GetClientIp()==IpAddresses.Value)
    {
    IppAddressMatch=true;
    打破
    }
    }
    如果(!IppAddressMatch)
    {
    //日志消息
    返回内容(“403禁止”、“文本/html”);
    }
    

    关键是:如果PC的地址包含在XML中,那么一切都正常,但是如果PC的地址不包含在XML中,那么就出现错误。很明显,当您找到一个匹配的地址时,您可以停止查找匹配的地址(
    break

    ,因为您没有对变量IppAddressMatch执行任何操作-您将其设置为false,如果匹配,可能为true,但返回-它没有任何用途。谢谢。但是如何更正呢?删除代码。。你没用过。因此,删除定义行,如果其匹配,则删除整个case。您打算将变量
    IppAddressMatch
    用于什么?只是为了设置一个布尔值。因此,如果pc上的ip地址与xml文件中的一个ip地址匹配,那么布尔值必须为开。我不认为关闭
    将警告视为错误
    是个好主意,这个项目很可能是由更高级的开发人员设置的,他打开该选项是出于某种原因,你怎么知道?也许他不知道这个选项被激活了。在编写代码时,禁用此选项有时很有用,因此可以在不完成代码的情况下调试代码。