diff --git a/src/CloudGaming/Api/CloudGaming.ExtApi/CloudGaming.ExtApi.csproj b/src/CloudGaming/Api/CloudGaming.ExtApi/CloudGaming.ExtApi.csproj
index 062516c..c2219de 100644
--- a/src/CloudGaming/Api/CloudGaming.ExtApi/CloudGaming.ExtApi.csproj
+++ b/src/CloudGaming/Api/CloudGaming.ExtApi/CloudGaming.ExtApi.csproj
@@ -4,6 +4,8 @@
net8.0
enable
enable
+ Linux
+ ..\..
diff --git a/src/CloudGaming/Api/CloudGaming.ExtApi/Dockerfile b/src/CloudGaming/Api/CloudGaming.ExtApi/Dockerfile
new file mode 100644
index 0000000..782e2a1
--- /dev/null
+++ b/src/CloudGaming/Api/CloudGaming.ExtApi/Dockerfile
@@ -0,0 +1,35 @@
+# 请参阅 https://aka.ms/customizecontainer 以了解如何自定义调试容器,以及 Visual Studio 如何使用此 Dockerfile 生成映像以更快地进行调试。
+
+# 此阶段用于在快速模式(默认为调试配置)下从 VS 运行时
+FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
+USER $APP_UID
+WORKDIR /app
+EXPOSE 80
+
+
+# 此阶段用于生成服务项目
+FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
+ARG BUILD_CONFIGURATION=Release
+WORKDIR /src
+COPY ["Api/CloudGaming.ExtApi/CloudGaming.ExtApi.csproj", "Api/CloudGaming.ExtApi/"]
+COPY ["Code/CloudGaming.Code/CloudGaming.Code.csproj", "Code/CloudGaming.Code/"]
+COPY ["Model/CloudGaming.AppConfigModel/CloudGaming.AppConfigModel.csproj", "Model/CloudGaming.AppConfigModel/"]
+COPY ["Model/CloudGaming.DtoModel/CloudGaming.DtoModel.csproj", "Model/CloudGaming.DtoModel/"]
+COPY ["Model/CloudGaming.GameModel/CloudGaming.GameModel.csproj", "Model/CloudGaming.GameModel/"]
+COPY ["Utile/HuanMeng.DotNetCore/HuanMeng.DotNetCore.csproj", "Utile/HuanMeng.DotNetCore/"]
+COPY ["Model/CloudGaming.Model/CloudGaming.Model.csproj", "Model/CloudGaming.Model/"]
+RUN dotnet restore "./Api/CloudGaming.ExtApi/CloudGaming.ExtApi.csproj"
+COPY . .
+WORKDIR "/src/Api/CloudGaming.ExtApi"
+RUN dotnet build "./CloudGaming.ExtApi.csproj" -c $BUILD_CONFIGURATION -o /app/build
+
+# 此阶段用于发布要复制到最终阶段的服务项目
+FROM build AS publish
+ARG BUILD_CONFIGURATION=Release
+RUN dotnet publish "./CloudGaming.ExtApi.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false
+
+# 此阶段在生产中使用,或在常规模式下从 VS 运行时使用(在不使用调试配置时为默认值)
+FROM base AS final
+WORKDIR /app
+COPY --from=publish /app/publish .
+ENTRYPOINT ["dotnet", "CloudGaming.ExtApi.dll"]
\ No newline at end of file
diff --git a/src/CloudGaming/Code/CloudGaming.Code/Game/PlayGameProcessor.cs b/src/CloudGaming/Code/CloudGaming.Code/Game/PlayGameProcessor.cs
index 7e14386..4bb8daa 100644
--- a/src/CloudGaming/Code/CloudGaming.Code/Game/PlayGameProcessor.cs
+++ b/src/CloudGaming/Code/CloudGaming.Code/Game/PlayGameProcessor.cs
@@ -63,6 +63,8 @@ public class PlayGameProcessor(IServiceProvider serviceProvider) : ThreadProcess
var userNotActionEndGame = DateTime.Now.AddSeconds(-appConfig.GameConfig.UserNotActionEndGame);
using var scope = serviceProvider.CreateScope();
+ var app = scope.ServiceProvider.GetRequiredService();
+ appConfig.ToAppConfig(app);
var dao = scope.ServiceProvider.GetDAO(appConfig);
var redis = appConfig.GetRedisDataBase();
var redisServer = appConfig.GetRedisServer();
@@ -106,7 +108,8 @@ public class PlayGameProcessor(IServiceProvider serviceProvider) : ThreadProcess
///
private async Task EndGameAsync(PlayGameUserInfo user, AppConfig appConfig, DAO dao, IDatabase redis)
{
- using HttpClient httpClient = new HttpClient(new JYApiAppConfigHandler(appConfig, user.Ip));
+ HttpClient httpClient = new HttpClient(new JYApiAppConfigHandler(appConfig, user.Ip));
+ httpClient.BaseAddress = new Uri(appConfig.GameConfig.BsUrl);
var jyApi = RestService.For(httpClient);
var playGameCommonSetting = new PlayGameCommonSetting
diff --git a/src/CloudGaming/Code/CloudGaming.Code/JY/JYApiAppConfigHandler.cs b/src/CloudGaming/Code/CloudGaming.Code/JY/JYApiAppConfigHandler.cs
index dcebaab..5e55c9b 100644
--- a/src/CloudGaming/Code/CloudGaming.Code/JY/JYApiAppConfigHandler.cs
+++ b/src/CloudGaming/Code/CloudGaming.Code/JY/JYApiAppConfigHandler.cs
@@ -7,50 +7,30 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
-namespace CloudGaming.Code.JY
+namespace CloudGaming.Code.JY;
+
+public class JYApiAppConfigHandler : JYApiHandler
{
- public class JYApiAppConfigHandler : JYApiHandler
+ protected AppConfig AppConfig { get; set; }
+ protected string Ip { get; set; }
+ public JYApiAppConfigHandler(AppConfig appConfig, string ip) : base(null)
{
- protected AppConfig AppConfig { get; set; }
- protected string Ip { get; set; }
- public JYApiAppConfigHandler(AppConfig appConfig, string ip) : base(null)
- {
- AppConfig = appConfig;
- Ip = ip;
- }
+ AppConfig = appConfig;
+ Ip = ip;
+ InnerHandler = new HttpClientHandler();
+ }
- //protected new async Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
- //{
- // try
- // {
- // await SetRequest(request);
- // var sw = Stopwatch.StartNew();
- // var response = await base.SendAsync(request, cancellationToken);
- // sw.Stop();
- // if (response.IsSuccessStatusCode)
- // {
- // await AttachDebugInfoAsync(request, response, sw.Elapsed.TotalMilliseconds.ToString());
- // }
- // return response;
- // }
- // catch (Exception ex)
- // {
- // // 可根据实际需要扩展异常处理逻辑
- // throw new HttpRequestException("发送请求时发生错误。", ex);
- // }
- //}
- protected override async Task SetRequest(HttpRequestMessage request)
+
+ protected override async Task SetRequest(HttpRequestMessage request)
+ {
+
+ UpdateRequestUri(request, AppConfig.GameConfig.BsUrl);
+
+ if (request.Content is FormUrlEncodedContent)
{
-
- UpdateRequestUri(request, AppConfig.GameConfig.BsUrl);
-
- if (request.Content is FormUrlEncodedContent)
- {
-
- await UpdateRequestContentAsync(request, AppConfig, Ip);
- }
-
+ await UpdateRequestContentAsync(request, AppConfig, Ip);
}
+
}
}