diff --git a/HttpClientStudy.UnitTest/HttpResponses/HttpResponseContentTest.cs b/HttpClientStudy.UnitTest/HttpResponses/HttpResponseContentTest.cs
index d43283d..3f40552 100644
--- a/HttpClientStudy.UnitTest/HttpResponses/HttpResponseContentTest.cs
+++ b/HttpClientStudy.UnitTest/HttpResponses/HttpResponseContentTest.cs
@@ -18,7 +18,25 @@ namespace HttpClientStudy.UnitTest.HttpResponses
[Fact]
public void Test()
{
-
+ HttpClient client = new HttpClient();
+
+ var content = new StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(new { Name="sdfsdf"}), Encoding.UTF8, System.Net.Mime.MediaTypeNames.Application.Json);
+
+ client.PostAsync("http://www.baidu.com", content);
}
+
+ [Fact]
+ public async void Test2()
+ {
+ HttpClient client = new HttpClient();
+
+ var dd = await client.PostAsJsonAsync("url", new { Name = "" }, CancellationToken.None);
+ }
+ }
+
+ public class Demo
+ {
+ public string Name { get; set; }
+ public string Description { get; set; }
}
}
diff --git a/HttpClientStudy.UnitTest/StartupTest.cs b/HttpClientStudy.UnitTest/StartupTest.cs
index d384a6f..24b2464 100644
--- a/HttpClientStudy.UnitTest/StartupTest.cs
+++ b/HttpClientStudy.UnitTest/StartupTest.cs
@@ -13,10 +13,7 @@ namespace HttpClientStudy.UnitTest
[Fact]
public void StartWebApiProject()
{
- string projectAndMutexName = WebApiConfigManager.GetWebApiConfigOption().CurrentValue.WebAppMutexName;
- var mutex = new Mutex(true, projectAndMutexName, out bool createdResult);
- Assert.False(createdResult);
}
}
}
diff --git a/HttpClientStudy.UnitTest/startup.cs b/HttpClientStudy.UnitTest/startup.cs
index efa6bb9..e29deff 100644
--- a/HttpClientStudy.UnitTest/startup.cs
+++ b/HttpClientStudy.UnitTest/startup.cs
@@ -3,19 +3,25 @@
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
+
+//集成 asp.net core 引用 TestHost(3.0+)
using Microsoft.AspNetCore.TestHost;
+
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Xunit;
using Xunit.DependencyInjection;
+
+//如果使用最小API,则引用
using Xunit.DependencyInjection.AspNetCoreTesting;
+
using Xunit.DependencyInjection.Logging;
namespace HttpClientStudy.UnitTest
{
///
- /// 依赖注入 框架必备设置类
+ /// 依赖注入框架:Xunit.DependencyInjection, 必备设置类
///
public class Startup
{
@@ -29,12 +35,12 @@ namespace HttpClientStudy.UnitTest
}
///
- /// 配置主机:可选
+ /// 配置主机:可选(集成Asp.Net Core时,配置主机)
///
///
public void ConfigureHost(IHostBuilder hostBuilder)
{
- //确保启动webapi项目
+ //确保启动 webapi 项目
StartWebApiProject();
hostBuilder
@@ -47,27 +53,34 @@ namespace HttpClientStudy.UnitTest
.ConfigureAppConfiguration((context, builder) =>
{
+ })
+ //配置Web主机
+ .ConfigureWebHost(webHostBuilder =>
+ {
+ webHostBuilder
+ //测试主机,集成测试使用
+ .UseTestServer(options =>
+ {
+ options.PreserveExecutionContext = true;
+ })
+ .ConfigureTestServices(a =>
+ {
+
+ })
+ .UseStartup();
+
+ //配置默认配置项
+ //webHostBuilder.ConfigureAppConfiguration((context, configBuilder) =>
+ //{
+ // configBuilder.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
+ // configBuilder.AddJsonFile($"appsettings.{context.HostingEnvironment.EnvironmentName}.json", optional: true, reloadOnChange: true);
+ //});
+
+ //webHostBuilder.ConfigureServices(services =>
+ //{
+ // services.AddHealthChecks();
+ //});
});
-
- hostBuilder.ConfigureWebHost(webHostBuilder =>
- {
- webHostBuilder
- .UseTestServer(options => options.PreserveExecutionContext = true)
- .ConfigureTestServices(a => { })
- .UseStartup();
-
- //配置默认配置项
- //webHostBuilder.ConfigureAppConfiguration((context, configBuilder) =>
- //{
- // configBuilder.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
- // configBuilder.AddJsonFile($"appsettings.{context.HostingEnvironment.EnvironmentName}.json", optional: true, reloadOnChange: true);
- //});
-
- //webHostBuilder.ConfigureServices(services =>
- //{
- // services.AddHealthChecks();
- //});
- });
}
///
@@ -79,21 +92,11 @@ namespace HttpClientStudy.UnitTest
Debugger.Log(1, "DI", "ConfigureServices");
}
- private class WebApiStartup
- {
- public void ConfigureServices(IServiceCollection services) => services.AddLogging(lb => lb.AddXunitOutput());
-
- public void Configure(IApplicationBuilder app)
- {
- app.Run(static context => context.Response.WriteAsync("xxxxxx"));
- }
- }
-
///
/// 启动webapi项目
/// (出现webapi项目启动命令行窗口)
///
- public void StartWebApiProject()
+ private void StartWebApiProject()
{
string projectAndMutexName = WebApiConfigManager.GetWebApiConfigOption().CurrentValue.WebAppMutexName;
@@ -127,13 +130,34 @@ namespace HttpClientStudy.UnitTest
//由互斥锁判断
bool webAppIsRunningByMutex()
{
+ bool createdResult = true;
+
//创建互斥锁
- _ = new Mutex(true, projectAndMutexName, out bool createdResult);
-
+ using (var mutex = new Mutex(true, projectAndMutexName, out createdResult))
+ {
+ if (createdResult)
+ {
+ mutex.ReleaseMutex();
+ }
+ }
+
//互斥锁是否创建成功
return !createdResult;
}
}
+
+ private class WebApiStartup
+ {
+ public void ConfigureServices(IServiceCollection services)
+ {
+ services.AddLogging(lb => lb.AddXunitOutput());
+ }
+
+ public void Configure(IApplicationBuilder app)
+ {
+ app.Run(static context => context.Response.WriteAsync("xxxxxx"));
+ }
+ }
}
}
diff --git a/HttpClientStudy.WebApp/Program.cs b/HttpClientStudy.WebApp/Program.cs
index a473e15..1768354 100644
--- a/HttpClientStudy.WebApp/Program.cs
+++ b/HttpClientStudy.WebApp/Program.cs
@@ -27,6 +27,14 @@ namespace HttpClientStudy.WebApp
///
public static void Main(string[] args)
{
+ string projectAndMutexName = WebApiConfigManager.GetWebApiConfigOption().CurrentValue.WebAppMutexName;
+ var mutex = new Mutex(true,projectAndMutexName,out bool createdResult);
+ if (createdResult == false)
+ {
+ Console.WriteLine($"ѾһʵУʵ˳");
+ return;
+ }
+
var builder = WebApplication.CreateBuilder(args);
#region ע