好的,废话不多说了,直接上


静态文件

image、css、js等静态文件放在默认的wwwroot文件夹(内容根目录)

或者修改自定义根目录:webBuilder.UseContentRoot("public")

注意:如果需要访问到,需要添加中间件:app.UseStaticFiles();

Libman库管理器(针对前端css、js)

右键内容根目录(wwwroot)=> 添加 => 客户端库

支持引用库版本管理以及还原,类似于nuget

ASP.NET Core css/js捆绑和压缩
  1. nuget安装工具包:BuildBundlerMinifier
  2. 创建配置文件:bundleconfig.json 文件名固定

    [
      {
        //输出文件名
        "outputFileName": "wwwroot/css/site.min.css",
        //需要压缩捆绑的文件列表
        "inputFiles": [
          "wwwroot/site.css",
          "wwwroot/index.css"
        ],
        //不压缩,只捆绑
        "minify": {
          "enabled": false
        }
      },
      {
        "outputFileName": "wwwroot/css/site.min.js",
        "inputFiles": [
          "wwwroot/site.js",
          "wwwroot/index.js"
        ]
      }
    ]

应用部署

.NET Core三种部署方式

  1. 依赖框架的部署(FDD)

    依赖服务器或者系统已安装的.NET Core(运行时、SDK),只包含自己的代码和第三方的依赖项

    包含一个.dll文件(主程序),可以用dotnet run

    优点:不必预先定义应用运行的目标操作系统(可能在windows或者linux),生成是一种通用的可执行文件、部署包体积小(不含.NET Core)、降低磁盘空间、如果.NET Core更新时,只需更新系统

  2. 独立部署(SCD)

    不依赖系统的.NET Core,生成的应用包含了目标框架的.NET Core以及一个可执行文件.exe或者.dll

    优点:可以单独控制应用的.NET Core版本

    缺点:不可移植,必须选择目标系统、部署包比较大

  3. 依赖框架的可执行文件(FDE)

    结合依赖框架的部署(FDD)和独立部署(SCD)一种部署方式

    依赖于系统.NET Core且针对目标框架优化的部署方式

##### 部署到IIS上的两种方式

托管池:无拖管代码

  1. 进程内托管

    应用部署到IIS上后还要设置进程管理器(iis和windows服务)

    收到请求的时候启用应用,并且在应用发生故障时负责重启

    这里没有Kestrel参与

  2. 进程外托管

    通过反向代理将请求转发给应用

部署方式修改:在web.config里 hostingModel=“inprocess/outofprocess”,然后重启网站生效 或者在编译前配置项目文件:

  <PropertyGroup>
    <AspNetCoreHostingModel>inprocess</AspNetCoreHostingModel>
  </PropertyGroup>

区别:如果web应用确定用iis部署,建议【进程内托管】部署

进程内比进程外性能要高,进程外部署,多了个转发(环回适配器,用于将传出的网络流量返回给同一个计算机Kestrel,这里有性能的损失)

Kestrel性能确实比IIS高,但Kestrel功能太弱(负载均衡等等),不适合直接暴露出去

​ 如果web应用确定用linux部署,只能进程外托管

部署到Docker

vs自带docker部署工具,需要配合dockerDestop使用

创建项目时勾选docker支持或者创建项目后,右键项目 =>添加 =>docker支持

# 基础阶段
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

# 构建阶段,包含了所有构建工具
FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
WORKDIR /src
COPY ["WebApplication1/WebApplication1.csproj", "WebApplication1/"]
RUN dotnet restore "WebApplication1/WebApplication1.csproj"
COPY . .
WORKDIR "/src/WebApplication1"
RUN dotnet build "WebApplication1.csproj" -c Release -o /app/build

# 发布阶段
FROM build AS publish
RUN dotnet publish "WebApplication1.csproj" -c Release -o /app/publish

# 最终阶段
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "WebApplication1.dll"]

docker images 查看所有容器

docker ps 查看正在运行的容器

docker run --name=asp -p 5000:80 -d aspnetcodedemo 运行某个容器

声明:文中涉及的观点仅为个人在学习时总结以及讲师的原话,如有冒犯请海涵

Last modification:March 21st, 2020 at 09:30 pm
如果觉得我的文章对你有用,请随意赞赏