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 ע