gpt4 book ai didi

c# - 模拟网络故障

转载 作者:行者123 更新时间:2023-11-30 17:46:59 24 4
gpt4 key购买 nike

我使用网络服务编写了一个应用程序,我想模拟网络故障以进行测试。我知道我可以手动关闭网络,但如果它能自动关闭那就太棒了。

我尝试了以下解决方案:How to simulate network failure for test purposes (in C#)?来自 Larsenal 但它不识别 ManagementClass/ObjectCollection/... 我不知道为什么(我使用了 System.Managment.Man... 但它仍然没有用。我导入了所需的引用 - 没有'不工作。我不知道我做错了什么)

它应该像这样工作:

[TestMethod]
public void Service_Login_NoInternetConnection()
{
// Some code...
TurnOffNetworkConnection();
// More code...
TurnOnNetworkConnection();
// Blablabla code...
}

最佳答案

您可以为此使用 WMI。

首先确保添加引用:System.Management

然后我得到所有设备:
"ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\CIMV2", "SELECT * FROM Win32_NetworkAdapterConfiguration");"

现在我需要检查设备是否获得了 DHCPLeaseObtained。
所以我使用 foreach 来检查搜索器中的每个网络设备:
String Check = Convert.ToString(queryObj["DHCPLeaseObtained"]);

如果设备没有 DHCPLeaseObtained 字符串将为空。所以我检查字符串是否为空:
如果 (String.IsNullOrEmpty(检查))

然后你可以在else中使用ReleaseDHCPLease和RenewDHCPLease。
ManagementBaseObject outParams = queryObj.InvokeMethod("ReleaseDHCPLease", null, null);
或者
ManagementBaseObject outParams = queryObj.InvokeMethod("RenewDHCPLease", null, null);

using System.Management;


public void TurnOnNetworkConnection()
{

try
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_NetworkAdapterConfiguration");

foreach (ManagementObject queryObj in searcher.Get())
{
String Check = Convert.ToString(queryObj["DHCPLeaseObtained"]);
if (String.IsNullOrEmpty(Check))
{
}
else
{
ManagementBaseObject outParams = queryObj.InvokeMethod("RenewDHCPLease", null, null);
}
}
}
catch (ManagementException e)
{
MessageBox.Show("An error occurred while querying for WMI data: " + e.Message);
}
}

public void TurnOffNetworkConnection()
{
try
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_NetworkAdapterConfiguration");

foreach (ManagementObject queryObj in searcher.Get())
{
String Check = Convert.ToString(queryObj["DHCPLeaseObtained"]);
if (String.IsNullOrEmpty(Check))
{
}
else
{
ManagementBaseObject outParams = queryObj.InvokeMethod("ReleaseDHCPLease", null, null);
}
}
}
catch (ManagementException e)
{
MessageBox.Show("An error occurred while querying for WMI data: " + e.Message);
}
}

关于c# - 模拟网络故障,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25319080/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com