2015-08-13 2 views
-1

У меня есть xml со многими адресами Ip. Как это:Проверьте, соответствует ли ipaddress

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

А теперь я хочу, чтобы проверить, если один из IP-адресов совпадает с адресом Ip ПК. Так что этому пользователю разрешено видеть продукт.

Если один из Ipaddresses в XML не соответствует 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"); 


       } 
      } 

Но я получаю эту ошибку:

Error 6 Warning as Error: The variable 'IppAddressMatch' is assigned but its value is never used

+2

Поскольку вы ничего не делаете с переменной IppAddressMatch - вы устанавливаете ее в false, может быть, true, если она совпадает, но возвращает - у нее нет цель. – BugFinder

+0

Спасибо. Но как это исправить? – InfinityGoesAround

+1

удалите код. Вы его не использовали. поэтому удалите строку определения, а целое, если его соответствующий случай – BugFinder

ответ

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

Дело в том: если адрес компьютера содержится в XML, то все в порядке, но если адрес из ПК не содержится в XML, а затем ошибка. Ясно, что когда вы найдете один соответствующий адрес, вы можете перестать искать соответствующие адреса (break)

+0

ах, да, спасибо !! это оно. – InfinityGoesAround

-1

У вас есть две опции, чтобы решить это:

  1. Удалите переменную IppAddressMatch, потому что вы не используя его.
  2. Изменить «рассматривать предупреждения как ошибки» вариант. См Warning as error - How to rid these
+0

Я не думаю, что переключение 'обрабатывает предупреждения поскольку ошибки - это хорошая идея, этот проект был более чем вероятен настройкой более старшего разработчика, и он включил эту опцию по какой-то причине – 3dd

+0

И как вы это знаете? Может быть, он не знает, что этот вариант активирован. Иногда, когда вы пишете код, полезно отключить эту функцию, чтобы вы могли отлаживать код без его завершения. – Ignacio

Смежные вопросы