C# 检查IP地址是否匹配
我有一个包含许多Ip地址的xml。像这样: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
<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”
但它的价值从未被使用过
您有两个选项来解决此问题:
代码可能类似于:
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地址匹配,那么布尔值必须为开。我不认为关闭将警告视为错误是个好主意,这个项目很可能是由更高级的开发人员设置的,他打开该选项是出于某种原因,你怎么知道?也许他不知道这个选项被激活了。在编写代码时,禁用此选项有时很有用,因此可以在不完成代码的情况下调试代码。