检查ipaddress是否匹配

时间:2015-08-13 08:14:21

标签: c# asp.net

我有一个带有许多IP地址的xml。像这样:

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

现在我想检查其中一个IP地址是否与电脑的IP地址匹配。以便允许该用户查看该产品。

如果XML中的一个Ipaddresses与pc的Ipaddress不匹配,则必须返回错误消息。我这样试试:

 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");


                }
            }

但是我收到了这个错误:

  

错误6警告错误:分配了变量'IppAddressMatch'   但它的价值从未使用

2 个答案:

答案 0 :(得分:3)

代码可能应该是这样的:

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");
}

重点是:如果PC的地址包含在XML中,那么一切正常,但如果PC中的地址未包含在XML中,那么就是错误。显然,当您找到一个匹配的地址时,您可以停止查找匹配的地址(break

答案 1 :(得分:-1)

您有两种方法可以解决此问题:

  1. 删除 IppAddressMatch 变量,因为您没有使用它。
  2. 更改&#34;将警告视为错误&#34; 选项。请参阅Warning as error - How to rid these