更新接口

master
bicijinlian
parent ca0ec6fda7
commit 8467b6a438

@ -0,0 +1,35 @@
{
"version": "0.2.0",
"configurations": [
{
// Use IntelliSense to find out which attributes exist for C# debugging
// Use hover for the description of the existing attributes
// For further information visit https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md
"name": ".NET Core Launch (web)",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build",
// If you have changed target frameworks, make sure to update the program path.
"program": "${workspaceFolder}/DockerStudyApi/bin/Debug/net5.0/DockerStudyApi.dll",
"args": [],
"cwd": "${workspaceFolder}/DockerStudyApi",
"stopAtEntry": false,
// Enable launching a web browser when ASP.NET Core starts. For more information: https://aka.ms/VSCode-CS-LaunchJson-WebBrowser
"serverReadyAction": {
"action": "openExternally",
"pattern": "\\bNow listening on:\\s+(https?://\\S+)"
},
"env": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"sourceFileMap": {
"/Views": "${workspaceFolder}/Views"
}
},
{
"name": ".NET Core Attach",
"type": "coreclr",
"request": "attach"
}
]
}

42
.vscode/tasks.json vendored

@ -0,0 +1,42 @@
{
"version": "2.0.0",
"tasks": [
{
"label": "build",
"command": "dotnet",
"type": "process",
"args": [
"build",
"${workspaceFolder}/DockerStudyApi/DockerStudyApi.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
],
"problemMatcher": "$msCompile"
},
{
"label": "publish",
"command": "dotnet",
"type": "process",
"args": [
"publish",
"${workspaceFolder}/DockerStudyApi/DockerStudyApi.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
],
"problemMatcher": "$msCompile"
},
{
"label": "watch",
"command": "dotnet",
"type": "process",
"args": [
"watch",
"run",
"${workspaceFolder}/DockerStudyApi/DockerStudyApi.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
],
"problemMatcher": "$msCompile"
}
]
}

@ -1,4 +1,6 @@
# 注释: Dockerfile学习镜像
FROM busybox
ENV file=app
ADD ./project/ /usr/local/$file/
# Deckerfile 环境变量测试
FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS EnvStudy
ENV DockerfileEvn_A=InDockerfile
WORKDIR /app
COPY WebApiPublish/ /app/
ENTRYPOINT ["dotnet", "DockerStudyApi.dll"]

File diff suppressed because it is too large Load Diff

@ -14,6 +14,11 @@
服务测试
</summary>
</member>
<member name="M:DockerStudyApi.Controllers.DemoController.RunTime">
<summary>
获取运行时信息
</summary>
</member>
<member name="M:DockerStudyApi.Controllers.DemoController.TestOption">
<summary>
说明泛型左右尖括号不能写在注释里会生成无效的xml
@ -42,20 +47,41 @@
(仅支持字符串或Key=value两种形式)
</summary>
</member>
<member name="M:DockerStudyApi.Controllers.DemoController.AllCmdPara">
<summary>
获取所有命令参数
</summary>
</member>
<member name="M:DockerStudyApi.Controllers.DemoController.Evn(System.String)">
<summary>
获取环境变量
</summary>
</member>
<member name="M:DockerStudyApi.Controllers.DemoController.AspNetCoeEvn">
<summary>
获取AspNetCore环境变量
(以ASPNETCORE_开头)
</summary>
</member>
<member name="M:DockerStudyApi.Controllers.DemoController.AllEvn">
<summary>
获取所有环境变量
</summary>
</member>
<member name="M:DockerStudyApi.Controllers.DemoController.ConfigItem(System.String)">
<summary>
获取配置项
</summary>
</member>
<member name="M:DockerStudyApi.Controllers.DemoController.Info">
<member name="M:DockerStudyApi.Controllers.DemoController.AllConfigItes">
<summary>
获取所有配置项
</summary>
</member>
<member name="M:DockerStudyApi.Controllers.DemoController.ConfigProviders">
<summary>
获取配置源
</summary>
</member>
</members>
</doc>

@ -0,0 +1,31 @@
::使用SC命令安装成Windows服务
::===================================
::请求管理员省份运行,可以删除
@echo off
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
if '%errorlevel%' NEQ '0' (
:: 请求管理员权限...
echo "Request to run with administrator privileges......"
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
exit /B
:gotAdmin
if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
pushd "%CD%"
CD /D "%~dp0"
::===================================
echo %cd%
:: 创建Windows服务
sc create DockerStudy.WebApi.Service binpath= "%cd%\..\DockerStudyApi.exe" start= auto
:: 设置服务的描述字符串
sc description DockerStudy.WebApi.Service "DockerStudy.WebApi 服务."
:: 启动服务
sc start "DockerStudy.WebApi.Service"
pause

@ -0,0 +1,31 @@
::使用SC命令安装成Windows服务
::===================================
::请求管理员省份运行,可以删除
@echo off
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
if '%errorlevel%' NEQ '0' (
:: 请求管理员权限...
echo "Request to run with administrator privileges......"
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
exit /B
:gotAdmin
if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
pushd "%CD%"
CD /D "%~dp0"
::===================================
echo %cd%
:: 创建Windows服务
sc create DockerStudy.WebApi.Service binpath= "%cd%\..\DockerStudyApi.exe" start= auto
:: 设置服务的描述字符串
sc description DockerStudy.WebApi.Service "DockerStudy.WebApi 服务."
:: 启动服务
sc start "DockerStudy.WebApi.Service"
pause

@ -0,0 +1,24 @@
::卸载Windows服务
::===================================
::请求管理员省份运行,可以删除
@echo off
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
if '%errorlevel%' NEQ '0' (
:: 请求管理员权限...
echo "Request to run with administrator privileges......"
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
exit /B
:gotAdmin
if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
pushd "%CD%"
CD /D "%~dp0"
::===================================
echo %cd%
sc stop DockerStudy.WebApi.Service
sc delete DockerStudy.WebApi.Service
pause

@ -6,7 +6,9 @@ using Microsoft.Extensions.Options;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Runtime.InteropServices;
using System.Threading.Tasks;
namespace DockerStudyApi.Controllers
@ -54,6 +56,24 @@ namespace DockerStudyApi.Controllers
return Ok();
}
/// <summary>
/// 获取运行时信息
/// </summary>
[HttpGet]
public IActionResult RunTime()
{
var runInfo = new Dictionary<string, string>()
{
{"操作系统",RuntimeInformation.OSDescription },
{".Net版本",RuntimeInformation.FrameworkDescription },
{"运行平台",RuntimeInformation.RuntimeIdentifier },
{"平台架构",RuntimeInformation.OSArchitecture.ToString() },
{"进程架构",RuntimeInformation.ProcessArchitecture.ToString() },
};
return Ok(runInfo);
}
/// <summary>
/// 说明泛型左右尖括号不能写在注释里会生成无效的xml
/// 解决:用[]或{}或中文符号<> 代替或者使用xml转义字符 &lt;&gt;
@ -99,7 +119,7 @@ namespace DockerStudyApi.Controllers
/// (仅支持字符串或Key=value两种形式)
/// </summary>
[HttpGet]
public IActionResult CmdPara(string cmdName)
public IActionResult CmdPara([Required(ErrorMessage = "命令行参数名必填")]string cmdName)
{
var cmdArgs = System.Environment.GetCommandLineArgs();
if (cmdArgs == null)
@ -141,21 +161,74 @@ namespace DockerStudyApi.Controllers
}
/// <summary>
/// 获取所有命令参数
/// </summary>
[HttpGet]
public IActionResult AllCmdPara()
{
var cmdArgs = System.Environment.GetCommandLineArgs();
if (cmdArgs == null)
{
return Ok("启动时没有设置:命令行参数");
}
return Ok(cmdArgs);
}
/// <summary>
/// 获取环境变量
/// </summary>
[HttpGet]
public IActionResult Evn(string envName)
public IActionResult Evn([Required(ErrorMessage = "环境变量名必填")]string envName)
{
var envValue = System.Environment.GetEnvironmentVariable(envName);
return Ok(envValue??"无此环境变量");
}
/// <summary>
/// 获取AspNetCore环境变量
/// (以ASPNETCORE_开头)
/// </summary>
[HttpGet]
public IActionResult AspNetCoeEvn()
{
var envValues = System.Environment.GetEnvironmentVariables();
if (envValues == null)
{
return Ok("无环境变量!");
}
var keys = envValues.Keys.Cast<string>().ToList();
foreach (var key in keys)
{
if (string.IsNullOrEmpty(key))
{
continue;
}
if (key.ToString().ToUpper().StartsWith("ASPNETCORE_") == false)
{
envValues.Remove(key);
}
}
return Ok(envValues);
}
/// <summary>
/// 获取所有环境变量
/// </summary>
[HttpGet]
public IActionResult AllEvn()
{
var envValues = System.Environment.GetEnvironmentVariables();
return Ok(envValues);
}
/// <summary>
/// 获取配置项
/// </summary>
[HttpGet]
public IActionResult ConfigItem(string itemName)
public IActionResult ConfigItem([Required(ErrorMessage = "配置项名称必填")]string itemName)
{
var envValue = _configuration.GetValue<string>(itemName);
return Ok(envValue ?? "无此配置变量");
@ -165,10 +238,24 @@ namespace DockerStudyApi.Controllers
/// 获取所有配置项
/// </summary>
[HttpGet]
public IActionResult Info()
public IActionResult AllConfigItes()
{
return Ok(_configuration.GetChildren());
}
/// <summary>
/// 获取配置源
/// </summary>
[HttpGet]
public IActionResult ConfigProviders()
{
var cnfigText = Newtonsoft.Json.JsonConvert.SerializeObject(_configuration.GetChildren());
return Ok(cnfigText);
var root = _configuration as ConfigurationRoot;
var providers = root.Providers.Select(p=>new {
Name=p.GetType().FullName,
});
return Ok(providers);
}
}
}

@ -9,13 +9,27 @@
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="5.0.12" />
<PackageReference Include="Microsoft.Extensions.Hosting.Systemd" Version="6.0.0" />
<PackageReference Include="Microsoft.Extensions.Hosting.WindowsServices" Version="6.0.0" />
<PackageReference Include="Microsoft.Extensions.Options" Version="6.0.0" />
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="6.0.0" />
<PackageReference Include="Microsoft.Extensions.Options.DataAnnotations" Version="6.0.0" />
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.11.1" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="5.6.3" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.2.3" />
<PackageReference Include="Swashbuckle.AspNetCore.Newtonsoft" Version="6.2.3" />
</ItemGroup>
<ItemGroup>
<None Update="Script\InstallWindowServer.ANSI.bat">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="Script\InstallWindowServer.UTF8.bat">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="Script\UnInstallWindowServer.bat">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
</Project>

@ -6,6 +6,7 @@ using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Threading.Tasks;
namespace DockerStudyApi
@ -17,15 +18,56 @@ namespace DockerStudyApi
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
public static IHostBuilder CreateHostBuilder(string[] args)
{
var hostBuilder = Host.CreateDefaultBuilder(args);
//根据操作系统设置服务
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
{
hostBuilder.UseWindowsService(config =>
{
//设置服务名
//config.ServiceName = "";
/*
* Windows.UseWindowsService使
* Windows.UseWindowsService()
1 WindowsServiceLifetime
2 AppContext.BaseDirectory Windows GetCurrentDirectory C:\WINDOWS\system32
3
ASP.NET Core CreateDefaultBuilder
appsettings.json/appsettings.{Environment}.json 使 Logging:EventLog:LogLevel:Default
使
*/
});
}
if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
{
hostBuilder.UseSystemd();
}
hostBuilder
.ConfigureAppConfiguration((hostingContext, config) =>
{
// config.AddJsonFile("appsettings.json", false, true);
{
// 作为windos服务运行时.UseWindowsService()方法,将 ContentRootPath 设置为 AppContext.BaseDirectory
/* CreateDefaultBuilder during host construction appsettings.json appsettings.{Environment}.json
ConfigureAppConfiguration SetBasePath
custom_settings.json
config.AddJsonFile("custom_settings.json");
*/
// config.AddJsonFile("appsettings.json", false, true);
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
return hostBuilder;
}
}
}

@ -0,0 +1,31 @@
::使用SC命令安装成Windows服务
::===================================
::请求管理员省份运行,可以删除
@echo off
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
if '%errorlevel%' NEQ '0' (
:: 请求管理员权限...
echo "Request to run with administrator privileges......"
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
exit /B
:gotAdmin
if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
pushd "%CD%"
CD /D "%~dp0"
::===================================
echo %cd%
:: 创建Windows服务
sc create DockerStudy.WebApi.Service binpath= "%cd%\..\DockerStudyApi.exe" start= auto
:: 设置服务的描述字符串
sc description DockerStudy.WebApi.Service "DockerStudy.WebApi 服务."
:: 启动服务
sc start "DockerStudy.WebApi.Service"
pause

@ -0,0 +1,31 @@
::使用SC命令安装成Windows服务
::===================================
::请求管理员省份运行,可以删除
@echo off
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
if '%errorlevel%' NEQ '0' (
:: 请求管理员权限...
echo "Request to run with administrator privileges......"
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
exit /B
:gotAdmin
if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
pushd "%CD%"
CD /D "%~dp0"
::===================================
echo %cd%
:: 创建Windows服务
sc create DockerStudy.WebApi.Service binpath= "%cd%\..\DockerStudyApi.exe" start= auto
:: 设置服务的描述字符串
sc description DockerStudy.WebApi.Service "DockerStudy.WebApi 服务."
:: 启动服务
sc start "DockerStudy.WebApi.Service"
pause

@ -0,0 +1,24 @@
::卸载Windows服务
::===================================
::请求管理员省份运行,可以删除
@echo off
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
if '%errorlevel%' NEQ '0' (
:: 请求管理员权限...
echo "Request to run with administrator privileges......"
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
exit /B
:gotAdmin
if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
pushd "%CD%"
CD /D "%~dp0"
::===================================
echo %cd%
sc stop DockerStudy.WebApi.Service
sc delete DockerStudy.WebApi.Service
pause
Loading…
Cancel
Save