|
|
|
@ -25,7 +25,7 @@ namespace HttpClientStudy.UnitTest
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
public IHostBuilder CreateHostBuilder()
|
|
|
|
|
{
|
|
|
|
|
return Host.CreateDefaultBuilder() ;
|
|
|
|
|
return Host.CreateDefaultBuilder();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
@ -34,16 +34,19 @@ namespace HttpClientStudy.UnitTest
|
|
|
|
|
/// <param name="hostBuilder"></param>
|
|
|
|
|
public void ConfigureHost(IHostBuilder hostBuilder)
|
|
|
|
|
{
|
|
|
|
|
//确保启动webapi项目
|
|
|
|
|
StartWebApiProject();
|
|
|
|
|
|
|
|
|
|
hostBuilder
|
|
|
|
|
//主机配置
|
|
|
|
|
.ConfigureHostConfiguration(builder =>
|
|
|
|
|
.ConfigureHostConfiguration(builder =>
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
})
|
|
|
|
|
//应用配置
|
|
|
|
|
.ConfigureAppConfiguration((context, builder) =>
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
.ConfigureAppConfiguration((context, builder) =>
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
hostBuilder.ConfigureWebHost(webHostBuilder =>
|
|
|
|
@ -71,9 +74,9 @@ namespace HttpClientStudy.UnitTest
|
|
|
|
|
/// 注册服务:必须
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="services"></param>
|
|
|
|
|
public void ConfigureServices(IServiceCollection services,HostBuilderContext context)
|
|
|
|
|
public void ConfigureServices(IServiceCollection services, HostBuilderContext context)
|
|
|
|
|
{
|
|
|
|
|
Debugger.Log(1,"DI","ConfigureServices");
|
|
|
|
|
Debugger.Log(1, "DI", "ConfigureServices");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private class WebApiStartup
|
|
|
|
@ -81,9 +84,56 @@ namespace HttpClientStudy.UnitTest
|
|
|
|
|
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()
|
|
|
|
|
{
|
|
|
|
|
string projectAndMutexName = WebApiConfigManager.GetWebApiConfigOption().CurrentValue.WebAppMutexName;
|
|
|
|
|
|
|
|
|
|
//webapi项目不在运行状态则启动webapi项目
|
|
|
|
|
if (webAppIsRunningByMutex() == false)
|
|
|
|
|
{
|
|
|
|
|
//VS项目根目录
|
|
|
|
|
string vsProjectPath = new DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory)!.Parent!.Parent!.Parent!.Parent!.FullName;
|
|
|
|
|
|
|
|
|
|
//webapi项目根项目
|
|
|
|
|
string webApiProjectPath = Path.Combine(vsProjectPath, projectAndMutexName);
|
|
|
|
|
|
|
|
|
|
//启动命令信息
|
|
|
|
|
var prossInfo = new ProcessStartInfo("dotnet", $"run --project {webApiProjectPath}")
|
|
|
|
|
{
|
|
|
|
|
UseShellExecute = true,
|
|
|
|
|
CreateNoWindow = false,
|
|
|
|
|
RedirectStandardOutput = false
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
//启动
|
|
|
|
|
Process.Start(prossInfo);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//由进程名判断
|
|
|
|
|
//bool webAppIsRunningByProcessName()
|
|
|
|
|
//{
|
|
|
|
|
// return Process.GetProcessesByName(projectAndMutexName).ToList().Count == 0;
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
//由互斥锁判断
|
|
|
|
|
bool webAppIsRunningByMutex()
|
|
|
|
|
{
|
|
|
|
|
//创建互斥锁
|
|
|
|
|
_ = new Mutex(true, projectAndMutexName, out bool createdResult);
|
|
|
|
|
|
|
|
|
|
//互斥锁是否创建成功
|
|
|
|
|
return !createdResult;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|