|
|
@@ -261,40 +261,52 @@ public partial class MainWindow : Window
|
|
|
}
|
|
|
|
|
|
var selectedAdapter = AdapterComboBox.SelectedItem as AdapterInfo;
|
|
|
- SetBusyState(true, $"正在连接 {device.Lan2Ip}...");
|
|
|
+ var httpPort = device.HttpPort > 0 ? device.HttpPort : 48888;
|
|
|
+ var baseAddress = $"http://{device.Lan2Ip}:{httpPort}";
|
|
|
|
|
|
- try
|
|
|
+ while (true)
|
|
|
{
|
|
|
- var httpPort = device.HttpPort > 0 ? device.HttpPort : 48888;
|
|
|
- var baseAddress = $"http://{device.Lan2Ip}:{httpPort}";
|
|
|
- var result = await _serverApiService.CheckHealthAsync(baseAddress, password, selectedAdapter?.IPv4Address ?? string.Empty);
|
|
|
- if (result.Success)
|
|
|
+ SetBusyState(true, $"正在连接 {device.Lan2Ip}...");
|
|
|
+
|
|
|
+ try
|
|
|
{
|
|
|
- SavePasswordForDevice(device, password);
|
|
|
- SetStatus("连接成功。", StatusMessageType.Success, true);
|
|
|
- OpenDeviceDetailsWindow(baseAddress, selectedAdapter?.IPv4Address ?? string.Empty, password);
|
|
|
+ var result = await _serverApiService.CheckHealthAsync(baseAddress, password, selectedAdapter?.IPv4Address ?? string.Empty);
|
|
|
+ if (result.Success)
|
|
|
+ {
|
|
|
+ SavePasswordForDevice(device, password);
|
|
|
+ SetStatus("连接成功。", StatusMessageType.Success, true);
|
|
|
+ OpenDeviceDetailsWindow(baseAddress, selectedAdapter?.IPv4Address ?? string.Empty, password);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (result.StatusCode == 401)
|
|
|
+ {
|
|
|
+ _passwordStoreService.ClearPassword(deviceKey);
|
|
|
+ SetStatus("管理密码错误,请重新输入。", StatusMessageType.Error, true);
|
|
|
+ SetBusyState(false);
|
|
|
+ MessageBox.Show(this, "管理密码校验失败,请重新输入管理密码。", "密码错误", MessageBoxButton.OK, MessageBoxImage.Warning);
|
|
|
+ if (!TryPromptForPassword(device, out password))
|
|
|
+ {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ SetStatus($"设备已发现,但 HTTP 验证失败:{result.Message}", StatusMessageType.Error, true);
|
|
|
return;
|
|
|
}
|
|
|
-
|
|
|
- if (result.StatusCode == 401)
|
|
|
+ catch (Exception ex)
|
|
|
{
|
|
|
- SetStatus("管理密码错误,请确认密码是否正确。", StatusMessageType.Error, true);
|
|
|
- MessageBox.Show(this, "管理密码校验失败,请确认密码是否正确。", "密码错误", MessageBoxButton.OK, MessageBoxImage.Warning);
|
|
|
+ SetStatus($"连接失败:{ex.Message}", StatusMessageType.Error, true);
|
|
|
+ MessageBox.Show(this, ex.Message, "连接失败", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
|
return;
|
|
|
}
|
|
|
-
|
|
|
- SetStatus($"设备已发现,但 HTTP 验证失败:{result.Message}", StatusMessageType.Error, true);
|
|
|
- }
|
|
|
- catch (Exception ex)
|
|
|
- {
|
|
|
- SetStatus($"连接失败:{ex.Message}", StatusMessageType.Error, true);
|
|
|
- MessageBox.Show(this, ex.Message, "连接失败", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
|
- }
|
|
|
- finally
|
|
|
- {
|
|
|
- SetBusyState(false);
|
|
|
+ finally
|
|
|
+ {
|
|
|
+ SetBusyState(false);
|
|
|
+ }
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
|
|
|
private void OpenDeviceDetailsWindow(string baseAddress, string localIPv4, string password)
|