• blazor调试部署全过程


    安装了最新的 dotnet SDK

    最好直接下载安装版, 不要zip版, 安装版会自动注册一些信息, 省去后面的很多麻烦.
    设置如下OS环境变量, 并重启计算机.
    (1) 将 dotnet.exe 路径加到OS的 PATH 环境变量中.
    (2) 设置 DOTNET_ROOT 环境变量, 取值为 C:\Program Files\dotnet
    (3) 设置 NUGET_PACKAGES 环境变量, 用于存放 nuget 下载包的路径, 默认为 %userprofile%.nuget\packages
    安装完毕, 通过下面命令检查sdk和runtime安装清单.

    dotnet --info

    安装 wasm-tools workload

    1. dotnet workload list ##检查是否安装 wasm-tools workload
    2. dotnet workload search ## 查询 wasm-tools workload 的准确名称
    3. dotnet workload install wasm-tools ## 安装 wasm-tools 这个workload

    新建 wasm 模板项目

    dotnet new blazorwasm -o testProject --no-https

    运行项目

    1. cd testProject
    2. dotnet run ##运行项目
    3. dotnet run --debug ## 运行程序with debug enabled
    4. dotnet watch ##热启动方式运行项目
    5. dotnet test ##运行测试用例

    浏览器调试

    1. dotnet run --debug ## 运行程序with debug enabled
    2. msedge --remote-debugging-port=9222 # 启动可调试的浏览器进程
    • 浏览器打开 blazor 主页地址
    • 在浏览器中按 Shift+Alt+D , 浏览器会开启一个带调试功能的tab页, 如果报错, 按照报错信息操作多数情况也会OK
    • 在调试的tab的dev tools的源代码的 file:// 节点下的C#源码, 可以设置断点.

    发布项目

    dotnet publish -c Release  ## 按照Release configuration的方式发布项目

    使用dotnet-serve部署项目

    dotnet-serve 是一个轻量级的http server, 可以很方便地将当前目录发布成网站, 另外也支持很多配置项,

    • 参考: https://github.com/pavelsavara/dotnet-wasm-todo-mvc
      使用 dotnet-serve 轻量级服务器: https://github.com/natemcmaster/dotnet-serve
    • dotnet-serve 不支持 404 重定向, 所以通过浏览器地址直接访问非index页面都会报404错误
    • 如果要支持 blazor base path, 比如 base path 为 /test2/, 命令行还是一样, 只需要将dotnet publish生成的所有文件从 D:\blazorDemo\bin\Release\net7.0\publish\wwwroot 移动到 D:\blazorDemo\bin\Release\net7.0\publish\wwwroot\test2 子目录即可.
    1. dotnet tool install --global dotnet-serve #下载并安装 dotnet-serve
    2. cd D:/blazorDemo/ # cd 到项目目录
    3. # 启动
    4. dotnet serve
    5. --port 8080
    6. --mime .wasm=application/wasm
    7. --mime .js=text/javascript
    8. --mime .json=application/json
    9. --directory bin\Release\net7.0\publish\wwwroot\

    使用nginx部署项目

    参考:

    1. http {
    2. include mime.types;
    3. types {
    4. application/wasm wasm;
    5. }
    6. server {
    7. listen 80;
    8. server_name localhost;
    9. location / {
    10. root D:/blazorDemo/bin/Release/net7.0/publish/wwwroot;
    11. try_files $uri $uri/ /index.html =404;
    12. }
    13. gzip on; # 启动压缩
    14. gzip_min_length 5k; # 文件大小<5k不压缩,否则进行压缩处理
    15. gzip_vary on; # 是否在http header中添加Vary: Accept-Encoding,建议开启
    16. gzip_types text/plain application/xml application/x-msdownload application/json application/wasm application/octet-stream;
    17. gzip_proxied no-cache no-store private expired auth;
    18. }
    19. }

    使用 caddy2 部署项目

    caddy很容易懂, 推荐使用.

    • 下面 Caddyfile 已设置了404跳转, 可以支持url地址栏直接重定向.
    • Caddy 服务端口需要在Caddyfile 的url中设定.
    • 如果要支持 blazor base path, 比如 base path 为 /test2/, caddy 也很容易即支持, Caddyfile 还是一样, 只需要将dotnet publish生成的所有文件从 D:\blazorDemo\bin\Release\net7.0\publish\wwwroot 移动到 D:\blazorDemo\bin\Release\net7.0\publish\wwwroot\test2 子目录即可.

    Caddyfile 内容:

    1. http://localhost:8081 {
    2. root * D:\blazorDemo\bin\Release\net7.0\publish\wwwroot
    3. encode gzip
    4. file_server
    5. try_files {path} /index.html
    6. header / {
    7. Content-Security-Policy = "upgrade-insecure-requests; default-src 'self'; style-src 'self'; script-src 'self'; img-src 'self'; object-src 'self'; worker-src 'self'; manifest-src 'self';"
    8. Strict-Transport-Security = "max-age=63072000; includeSubDomains; preload"
    9. X-Xss-Protection = "1; mode=block"
    10. X-Frame-Options = "DENY"
    11. X-Content-Type-Options = "nosniff"
    12. Referrer-Policy = "strict-origin-when-cross-origin"
    13. Permissions-Policy = "fullscreen=(self)"
    14. cache-control = "max-age=0,no-cache,no-store,must-revalidate"
    15. }
    16. handle_errors {
    17. @404 {
    18. expression {http.error.status_code}==404
    19. }
    20. rewrite @404 /index.html
    21. file_server
    22. }
    23. }

    Caddy2 启动命令:

    1. .\caddy_windows_amd64.exe start --config c:/Users/dorothy/Desktop/Caddyfile.txt
    2. base
  • 相关阅读:
    【QT进阶】Qt线程与并发之QtConcurrent返回值与run方法的参数说明
    漏洞预警|CVE-2023-38545 Curl 和 libcurl 堆缓冲区溢出漏洞
    SPA项目开发之动态树+数据表格+分页
    微信小程序开发常用的布局
    这个开学季,注定不平凡
    算法----BF算法&KMP算法
    SpringBoot项目中@Autowired注解注入组件为空Null,@Value注解注入值为空Null 的解决办法
    【C++】:类和对象(2)
    定时保存正在编辑的文档原理阐述及通过windowsApi实现
    Python之Xlwings操作excel
  • 原文地址:https://blog.csdn.net/csdnharrychinese/article/details/127840195