调试更新

main
wanggaofeng 5 months ago
parent ed7a888078
commit 00bd7b405d

@ -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; }
}
}

@ -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);
}
}
}

@ -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
{
/// <summary>
/// 依赖注入 框架必备设置类
/// 依赖注入框架:Xunit.DependencyInjection, 必备设置类
/// </summary>
public class Startup
{
@ -29,12 +35,12 @@ namespace HttpClientStudy.UnitTest
}
/// <summary>
/// 配置主机:可选
/// 配置主机:可选(集成Asp.Net Core时配置主机)
/// </summary>
/// <param name="hostBuilder"></param>
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<WebApiStartup>();
//配置默认配置项
//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<WebApiStartup>();
//配置默认配置项
//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();
//});
});
}
/// <summary>
@ -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"));
}
}
/// <summary>
/// 启动webapi项目
/// (出现webapi项目启动命令行窗口)
/// </summary>
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"));
}
}
}
}

@ -27,6 +27,14 @@ namespace HttpClientStudy.WebApp
/// <param name="args">启动参数</param>
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 向容器注册服务

Loading…
Cancel
Save