XFEExtension.NetCore.ServerInteractive
[DLL] Server interaction extension, including user identity verification and querying in conjunction with AutoConfig
关注
0
Fork
0
Star
0
返回提交历史
Modified
XFEExtension.NetCore.ServerInteractive/Implements/CoreService/XFEServerCoreServiceBase.cs
+1
-1
Modified
XFEExtension.NetCore.ServerInteractive/Models/ServerModels/ServerCoreErrorEventArgs.cs
+2
-2
Modified
XFEExtension.NetCore.ServerInteractive/Models/ServerModels/ServerCoreReturnArgs.cs
+4
-0
Modified
XFEExtension.NetCore.ServerInteractive/Utilities/Server/Services/CoreService/ServerCoreExceptionProcessService.cs
+3
-3
Modified
XFEExtension.NetCore.ServerInteractive/Utilities/Server/XFEServerCore.cs
+10
-11
Modified
XFEExtension.NetCore.ServerInteractive/XFEExtension.NetCore.ServerInteractive.csproj
+5
-6
XFEstudio/XFEExtension.NetCore.ServerInteractive
优化异常处理与客户端IP传递方式
本次更新统一了异常处理参数结构,将 CyberCommRequestEventArgs 替换为 ServerCoreReturnArgs,并在 ReturnArgs 中新增 ClientIP 属性。XFEServerCoreServiceBase 的 ClientIP 属性改为通过 ReturnArgs 读写,确保客户端IP在异常场景下正确传递。异常处理服务和核心服务均调整为使用 ReturnArgs,提升了代码一致性和维护性。版本号升级至 1.1.8。
4da2290
代码差异
6 个文件
+25
-23
@@ -14,7 +14,7 @@ public abstract class XFEServerCoreServiceBase : IXFEServerCoreServiceBase
14
14
/// <inheritdoc/>
15
15
public bool Handled { get => ReturnArgs.Handled; set => ReturnArgs.Handled = value; }
16
16
/// <inheritdoc/>
17
public string ClientIP { get; set; } = string.Empty;
17
public string ClientIP { get => ReturnArgs.ClientIP; set => ReturnArgs.ClientIP = value; }
18
18
/// <inheritdoc/>
19
19
public string Execute { get; set; } = string.Empty;
20
20
/// <inheritdoc/>
@@ -21,9 +21,9 @@ public class ServerCoreErrorEventArgs
21
21
/// </summary>
22
22
public HttpStatusCode StatusCode { get; set; } = HttpStatusCode.InternalServerError;
23
23
/// <summary>
24
/// 本次异常服务器参数
24
/// 本次异常服务器返回参数
25
25
/// </summary>
26
public CyberCommRequestEventArgs? CyberCommRequestEventArgs { get; set; }
26
public ServerCoreReturnArgs? ReturnArgs { get; set; }
27
27
28
28
/// <summary>
29
29
/// 服务器核心错误事件参数
@@ -13,6 +13,10 @@ public class ServerCoreReturnArgs : Exception
13
13
/// </summary>
14
14
public string ReturnMessage { get; set; } = string.Empty;
15
15
/// <summary>
16
/// 客户端IP地址
17
/// </summary>
18
public string ClientIP { get; set; } = string.Empty;
19
/// <summary>
16
20
/// 是否已经处理完成
17
21
/// </summary>
18
22
public bool Handled { get; set; } = false;
@@ -21,7 +21,7 @@ public class ServerCoreExceptionProcessService : ServerCoreOriginalServiceBase
21
21
22
22
private async void XFEServerCore_ServerCoreError(XFEServerCore sender, ServerCoreErrorEventArgs e)
23
23
{
24
if (!e.Handled && e.CyberCommRequestEventArgs is not null)
24
if (!e.Handled && e.ReturnArgs is not null)
25
25
{
26
26
var currentException = e.ServerException?.InnerException;
27
27
var errorMessage = e.ServerException?.Message ?? "服务器内部异常";
@@ -37,12 +37,12 @@ public class ServerCoreExceptionProcessService : ServerCoreOriginalServiceBase
37
37
currentException = currentException.InnerException;
38
38
}
39
39
}
40
Console.Write($"[WARN]【{e.CyberCommRequestEventArgs.ClientIP}】{errorMessage}");
40
Console.Write($"[WARN]【{e.ServerException}】{errorMessage}");
41
41
if (e.ServerException?.StackTrace is not null)
42
42
Console.WriteLine($"[TRACE]{e.ServerException?.StackTrace}");
43
43
try
44
44
{
45
await e.CyberCommRequestEventArgs.ReplyAndClose(errorMessage, e.StatusCode);
45
await e.ReturnArgs.ReplyAndClose(errorMessage, e.StatusCode);
46
46
}
47
47
catch { }
48
48
}
@@ -66,6 +66,7 @@ public abstract class XFEServerCore : ServerCoreServiceBase
66
66
};
67
67
var clientIP = e.ClientIP;
68
68
try { clientIP = GetIpFunction(e); } catch (Exception ex) { Console.WriteLine($"[WARN]获取IP地址失败:{ex.Message}"); }
69
r.ClientIP = clientIP;
69
70
try
70
71
{
71
72
foreach (var serverCoreVerifyService in serverCoreVerifyServiceList)
@@ -81,7 +82,7 @@ public abstract class XFEServerCore : ServerCoreServiceBase
81
82
{
82
83
StatusCode = r.StatusCode,
83
84
Handled = r.Handled,
84
CyberCommRequestEventArgs = e,
85
ReturnArgs = r,
85
86
ServerException = new ProcessStandardRequestException("请求校验失败", ex)
86
87
});
87
88
return;
@@ -98,7 +99,7 @@ public abstract class XFEServerCore : ServerCoreServiceBase
98
99
ServerCoreError?.Invoke(this, new()
99
100
{
100
101
StatusCode = HttpStatusCode.BadRequest,
101
CyberCommRequestEventArgs = e,
102
ReturnArgs = r,
102
103
ServerException = new ProcessStandardRequestException("无法转换为QueryableJsonNode", ex)
103
104
});
104
105
return;
@@ -109,8 +110,8 @@ public abstract class XFEServerCore : ServerCoreServiceBase
109
110
throw new ProcessStandardRequestException("QueryableJsonNode为空");
110
111
if (!execute.IsNullOrEmpty())
111
112
{
112
//Console.WriteLine($"【{e.ClientIP}】请求方法:{execute}");
113
Console.Write($"【{e.ClientIP}】请求方法-{execute}:");
113
//Console.WriteLine($"【{clientIP}】请求方法:{execute}");
114
Console.Write($"【{clientIP}】请求方法-{execute}:");
114
115
var stopWatch = Stopwatch.StartNew();
115
116
if (standardCoreServiceDictionary.TryGetValue(execute, out var serviceFactory))
116
117
{
@@ -119,7 +120,6 @@ public abstract class XFEServerCore : ServerCoreServiceBase
119
120
try
120
121
{
121
122
serviceInstance.XFEServerCore = this;
122
serviceInstance.ClientIP = e.ClientIP;
123
123
serviceInstance.Execute = execute;
124
124
serviceInstance.Json = queryableJsonNode;
125
125
serviceInstance.ReturnArgs = r;
@@ -133,11 +133,11 @@ public abstract class XFEServerCore : ServerCoreServiceBase
133
133
{
134
134
StatusCode = r.StatusCode,
135
135
Handled = r.Handled,
136
CyberCommRequestEventArgs = e,
136
ReturnArgs = r,
137
137
ServerException = new XFEServerCoreRequestInnerException($"请求异常-{execute}", ex)
138
138
});
139
139
}
140
//Console.WriteLine($"【{e.ClientIP}】请求处理完成:{execute}");
140
//Console.WriteLine($"【{clientIP}】请求处理完成:{execute}");
141
141
stopWatch.Stop();
142
142
Console.WriteLine($"\t[耗时 {InteractiveHelper.GetStopWatchTime(stopWatch)}]");
143
143
return;
@@ -151,7 +151,6 @@ public abstract class XFEServerCore : ServerCoreServiceBase
151
151
try
152
152
{
153
153
instance.XFEServerCore = this;
154
instance.ClientIP = e.ClientIP;
155
154
instance.Execute = execute;
156
155
instance.Json = queryableJsonNode;
157
156
instance.ReturnArgs = r;
@@ -165,7 +164,7 @@ public abstract class XFEServerCore : ServerCoreServiceBase
165
164
{
166
165
StatusCode = r.StatusCode,
167
166
Handled = r.Handled,
168
CyberCommRequestEventArgs = e,
167
ReturnArgs = r,
169
168
ServerException = new XFEServerCoreRequestInnerException($"请求异常-{execute}", ex)
170
169
});
171
170
}
@@ -177,7 +176,7 @@ public abstract class XFEServerCore : ServerCoreServiceBase
177
176
ServerCoreError?.Invoke(this, new()
178
177
{
179
178
StatusCode = HttpStatusCode.BadRequest,
180
CyberCommRequestEventArgs = e,
179
ReturnArgs = r,
181
180
ServerException = new ExecutionUnregisteredException($"请求的方法未注册-{execute}")
182
181
});
183
182
}
@@ -187,7 +186,7 @@ public abstract class XFEServerCore : ServerCoreServiceBase
187
186
ServerCoreError?.Invoke(this, new()
188
187
{
189
188
StatusCode = HttpStatusCode.InternalServerError,
190
CyberCommRequestEventArgs = e,
189
ReturnArgs = r,
191
190
ServerException = new ProcessStandardRequestException("处理标准请求时发生异常", ex)
192
191
});
193
192
}
@@ -5,7 +5,7 @@
5
5
<ImplicitUsings>enable</ImplicitUsings>
6
6
<Nullable>enable</Nullable>
7
7
<GenerateDocumentationFile>True</GenerateDocumentationFile>
8
<Version>1.1.7</Version>
8
<Version>1.1.8</Version>
9
9
<Title>XFEExtension.NetCore.ServerInteractive</Title>
10
10
<RepositoryUrl>https://github.com/XFEstudio/XFEExtension.NetCore.ServerInteractive</RepositoryUrl>
11
11
<AnalysisLevel>latest</AnalysisLevel>
@@ -21,12 +21,11 @@
21
21
<PackageReleaseNotes>
22
22
## 调整
23
23
24
增强核心服务IP处理与接口扩展,升级至1.1.7
24
优化异常处理与客户端IP传递方式
25
25
26
本次更新新增了核心服务基类和接口的 ClientIP 与 Handled 属性,支持服务处理过程中获取客户端IP和标记处理状态。
27
XFEServerCore 增加 GetIpFunction 委托,允许自定义IP获取逻辑。
28
XFEServerCoreBuilder 新增 UseCustomIPGetFunction 方法,提升扩展性。
29
服务实例初始化时补充 ClientIP 赋值。版本号升级至 1.1.7,并优化注释与初始化顺序。
26
本次更新统一了异常处理参数结构,将 CyberCommRequestEventArgs 替换为 ServerCoreReturnArgs,并在 ReturnArgs 中新增 ClientIP 属性。
27
XFEServerCoreServiceBase 的 ClientIP 属性改为通过 ReturnArgs 读写,确保客户端IP在异常场景下正确传递。异常处理服务和核心服务均调整为使用 ReturnArgs,提升了代码一致性和维护性。
28
版本号升级至 1.1.8。
30
29
31
30
## 新增
32
31