From a2b55742c64f4b2c9e6bd85ed3733adccdec48de Mon Sep 17 00:00:00 2001
From: wanshenmean <cathay_xy@163.com>
Date: 星期五, 13 三月 2026 14:37:27 +0800
Subject: [PATCH] fix: 修复Web页面HttpClient依赖注入问题
---
Code/WCS/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/Pages/Create.cshtml.cs | 11 +++++++----
Code/WCS/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/Pages/Details.cshtml.cs | 12 +++++++-----
Code/WCS/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/Pages/Edit.cshtml.cs | 23 ++++++++++++++++-------
Code/WCS/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/Program.cs | 1 +
4 files changed, 31 insertions(+), 16 deletions(-)
diff --git a/Code/WCS/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/Pages/Create.cshtml.cs b/Code/WCS/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/Pages/Create.cshtml.cs
index 928a997..2ddd774 100644
--- a/Code/WCS/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/Pages/Create.cshtml.cs
+++ b/Code/WCS/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/Pages/Create.cshtml.cs
@@ -12,13 +12,12 @@
public class CreateModel : PageModel
{
private readonly ILogger<CreateModel> _logger;
- private readonly HttpClient _httpClient;
+ private readonly IHttpClientFactory _httpClientFactory;
public CreateModel(ILogger<CreateModel> logger, IHttpClientFactory httpClientFactory)
{
_logger = logger;
- _httpClient = httpClientFactory.CreateClient();
- _httpClient.BaseAddress = new Uri($"{Request.Scheme}://{Request.Host}");
+ _httpClientFactory = httpClientFactory;
}
[BindProperty]
@@ -38,6 +37,10 @@
try
{
+ // 鍒涘缓HttpClient骞惰缃瓸aseAddress
+ var httpClient = _httpClientFactory.CreateClient();
+ httpClient.BaseAddress = new Uri($"{Request.Scheme}://{Request.Host}");
+
var config = new InstanceConfig
{
Id = Input.Id,
@@ -58,7 +61,7 @@
}
};
- var response = await _httpClient.PostAsJsonAsync("/api/SimulatorInstances", config);
+ var response = await httpClient.PostAsJsonAsync("/api/SimulatorInstances", config);
if (response.IsSuccessStatusCode)
{
diff --git a/Code/WCS/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/Pages/Details.cshtml.cs b/Code/WCS/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/Pages/Details.cshtml.cs
index bcbd46f..dc18dc6 100644
--- a/Code/WCS/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/Pages/Details.cshtml.cs
+++ b/Code/WCS/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/Pages/Details.cshtml.cs
@@ -10,13 +10,12 @@
public class DetailsModel : PageModel
{
private readonly ILogger<DetailsModel> _logger;
- private readonly HttpClient _httpClient;
+ private readonly IHttpClientFactory _httpClientFactory;
public DetailsModel(ILogger<DetailsModel> logger, IHttpClientFactory httpClientFactory)
{
_logger = logger;
- _httpClient = httpClientFactory.CreateClient();
- _httpClient.BaseAddress = new Uri($"{Request.Scheme}://{Request.Host}");
+ _httpClientFactory = httpClientFactory;
}
public InstanceState? Instance { get; private set; }
@@ -32,14 +31,17 @@
try
{
- var response = await _httpClient.GetAsync($"/api/SimulatorInstances/{Uri.EscapeDataString(id)}");
+ var httpClient = _httpClientFactory.CreateClient();
+ httpClient.BaseAddress = new Uri($"{Request.Scheme}://{Request.Host}");
+
+ var response = await httpClient.GetAsync($"/api/SimulatorInstances/{Uri.EscapeDataString(id)}");
if (response.IsSuccessStatusCode)
{
Instance = await response.Content.ReadFromJsonAsync<InstanceState>();
// Load clients
- var clientsResponse = await _httpClient.GetAsync($"/api/instances/{Uri.EscapeDataString(id)}/Clients");
+ var clientsResponse = await httpClient.GetAsync($"/api/instances/{Uri.EscapeDataString(id)}/Clients");
if (clientsResponse.IsSuccessStatusCode)
{
Clients = await clientsResponse.Content.ReadFromJsonAsync<List<S7ClientConnection>>() ?? new();
diff --git a/Code/WCS/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/Pages/Edit.cshtml.cs b/Code/WCS/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/Pages/Edit.cshtml.cs
index d4b125d..9310d00 100644
--- a/Code/WCS/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/Pages/Edit.cshtml.cs
+++ b/Code/WCS/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/Pages/Edit.cshtml.cs
@@ -12,13 +12,12 @@
public class EditModel : PageModel
{
private readonly ILogger<EditModel> _logger;
- private readonly HttpClient _httpClient;
+ private readonly IHttpClientFactory _httpClientFactory;
public EditModel(ILogger<EditModel> logger, IHttpClientFactory httpClientFactory)
{
_logger = logger;
- _httpClient = httpClientFactory.CreateClient();
- _httpClient.BaseAddress = new Uri($"{Request.Scheme}://{Request.Host}");
+ _httpClientFactory = httpClientFactory;
}
[BindProperty]
@@ -37,7 +36,10 @@
try
{
- var response = await _httpClient.GetAsync($"/api/SimulatorInstances/{Uri.EscapeDataString(id)}");
+ var httpClient = _httpClientFactory.CreateClient();
+ httpClient.BaseAddress = new Uri($"{Request.Scheme}://{Request.Host}");
+
+ var response = await httpClient.GetAsync($"/api/SimulatorInstances/{Uri.EscapeDataString(id)}");
if (response.IsSuccessStatusCode)
{
@@ -45,7 +47,7 @@
IsRunning = CurrentInstance?.Status == InstanceStatus.Running;
// Load existing config
- var configResponse = await _httpClient.GetAsync($"/api/SimulatorInstances");
+ var configResponse = await httpClient.GetAsync($"/api/SimulatorInstances");
if (configResponse.IsSuccessStatusCode)
{
var allInstances = await configResponse.Content.ReadFromJsonAsync<List<InstanceState>>();
@@ -82,6 +84,10 @@
try
{
+ // 鍒涘缓HttpClient骞惰缃瓸aseAddress
+ var httpClient = _httpClientFactory.CreateClient();
+ httpClient.BaseAddress = new Uri($"{Request.Scheme}://{Request.Host}");
+
var config = new InstanceConfig
{
Id = Input.Id,
@@ -102,7 +108,7 @@
}
};
- var response = await _httpClient.PutAsJsonAsync($"/api/SimulatorInstances/{Uri.EscapeDataString(Input.Id)}", config);
+ var response = await httpClient.PutAsJsonAsync($"/api/SimulatorInstances/{Uri.EscapeDataString(Input.Id)}", config);
if (response.IsSuccessStatusCode)
{
@@ -134,7 +140,10 @@
{
try
{
- var response = await _httpClient.GetAsync($"/api/SimulatorInstances/{Uri.EscapeDataString(id)}");
+ var httpClient = _httpClientFactory.CreateClient();
+ httpClient.BaseAddress = new Uri($"{Request.Scheme}://{Request.Host}");
+
+ var response = await httpClient.GetAsync($"/api/SimulatorInstances/{Uri.EscapeDataString(id)}");
if (response.IsSuccessStatusCode)
{
CurrentInstance = await response.Content.ReadFromJsonAsync<InstanceState>();
diff --git a/Code/WCS/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/Program.cs b/Code/WCS/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/Program.cs
index bc275e4..3d3d371 100644
--- a/Code/WCS/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/Program.cs
+++ b/Code/WCS/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/Program.cs
@@ -2,6 +2,7 @@
// Add services to the container.
builder.Services.AddRazorPages();
+builder.Services.AddHttpClient(); // 娉ㄥ唽HttpClient鏈嶅姟锛岀敤浜庤皟鐢ˋPI
var app = builder.Build();
--
Gitblit v1.9.3