最近买了个简单的服务器,想着搞点花活,就去找了找网上的开源代码,感谢大佬的开源库:(https://gitee.com/ysgdaydayup/DotNetGuide)

在上面有列开源的博客框架,我是下了两个:一个StarBlog,一个:Masuit.MyBlogs,两个都算是在本地上跑起来了,其中Masuit.MyBlogs已经在服务器上运行起来了,不过还有很多报错的,这两套源码前前后后折腾了一个来星期(上班抽空搞的,下班到家要陪小孩,也主要是本人技术太菜)。

从现在的使用情况来看,StarBlog更美观,但更适合个人使用,数据库使用的sqllite,算是没有持久化保存数据的。Masuit.MyBlogs相对更商业化,博客相关的评论,分类,广告之类的功能更加完善。

好了吹水的暂时就先说这么多吧,现在先聊聊在使用StarBlog上遇到的一些问题。

  1. StarBlog是有两个代码仓库的,一个是StarBlog一个是StarBlogAdmin,在对应大佬的开源主页上都能找到,因为分两个仓库一开始我以为只是一个空壳子框架,导致放弃。

  2. 开源库里也有说明,不过这里还是在说一遍:前端依赖的包里包含bootstrap5-treeview,所以在install包源的时候最好先排除bootstrap5-treeview之后先

    install i -g bower

不然下载包源的时候会一直报错,导致异常,这个折腾了我差不多一个多小时,还是在看了3遍开源库之后才发现问题

3.安装gulp-cli之后需要重新打开项目不然无法正确显示,我对vue的各种配置一直都很头痛,导致我对前端一直很无感,这次也是,因为安装gulp-cli之后在命令行里面使用gulp move无效之后才转头去下载Masuit.MyBlogs。

4.按仓库文档说的程序初始化千万要小心,记住要设自己常用的账号密码,设置完之后要保存起来。我昨天重新运行这个项目时因为忘记账号密码,也是折腾了很久。

5.当StarBlog程序运行起来之后,会发现只有博客程序,管理平台在另一个项目StarBlogAdmin,然后运行StarBlogAdmin之后会发现,登录使用的账号密码又是由StarBlog初始化时使用的,但是登录上去之后,对应的功能还是挺完善的。

总的来说,现在碰到的问题主要是前端配置的问题,.net core相关的代码基本上都是没有问题,也可能是我还没有开始动手修改源码。等后续有改动在继续更新文章吧。当然我现在使用的是Masuit.MyBlogs所以暂时这套博客框架暂时不会动了。

现在开始说说Masuit.MyBlogs运行时候遇到的坑吧。

1.项目依赖问题,开源库说的nuget安装Masuit.LuceneEFCore.SearchEngine,但是实际安装是要安装Masuit.LuceneEFCore.SearchEngine_int。然后默认库使用的是pgsql,不过我没用过,而且服务器安装的是mysql所以也就想着自己转换成mysql版本的程序,这里噩梦来了,由于我打开程序默认是.net9版本的,而我安装的Pomelo.EntityFrameworkCore.MySql稳定版是8.0.3,导致efcore一直提示报错,在使用ai查询多次之后才发现要在nuget选择包括预览版,下载Pomelo.EntityFrameworkCore.MySql 9.0.0-preview.3版本,但是由于这个版本是预预览版本,导致有时候运行代码会提示efcore转换linq失败。这个我得看后面什么时候把代码的.NET版本降回8.0看看会不会有问题。

2.当我把程序改成mysql之后才发现,没有对应的数据库脚本,在开源库中只找到了pgsql的脚本,之后就是想办法把pgsql的脚本转换为mysql的脚本。如果有人需要这个脚本的可以联系我,我看什么时候分享出来。

3.这个项目自带了url重写还强制使用https,但是我这个只是个人使用也没有买域名,所以为了去除掉这个重写能让他在http使用也是折腾了一会。下面讲一下要怎么操作:

  1. 首先appsettings.json里面的UseRewriter先改成WWW.虽然不知道这一步有没有用,但是还是改了。
  2. 在把PrepareStartup.cs里面SetupHttpsRedirection方法里面的代码全部注释掉。
  3. 在Program.cs里面把对应的代码改成下面的样子,对应的端口号可以改成自己的:
await Host.CreateDefaultBuilder(args).ConfigureAppConfiguration(builder => builder.AddJsonFile("appsettings.json", true, true)).UseServiceProviderFactory(new AutofacServiceProviderFactory()).ConfigureWebHostDefaults(hostBuilder => hostBuilder.UseQuic().UseKestrel(opt =>
{
var config = opt.ApplicationServices.GetService<IConfiguration>();
var port = config["Port"] ?? "5000";
//var sslport = config["Https:Port"] ?? "5001";
//opt.ListenAnyIP(port.ToInt32(), options => options.Protocols = HttpProtocols.Http1AndHttp2AndHttp3);
opt.ListenAnyIP(port.ToInt32());
//if (config["Https:Enabled"].ToBoolean())
//{
// opt.ListenAnyIP(sslport.ToInt32(), s =>
// {
// if (Environment.OSVersion is { Platform: PlatformID.Win32NT, Version.Major: >= 10 })
// {
// s.Protocols = HttpProtocols.Http1AndHttp2AndHttp3;
// } // s.UseHttps(AppContext.BaseDirectory + config["Https:CertPath"], config["Https:CertPassword"]);
// });
//} //opt.Limits.MaxRequestBodySize = null;
Console.WriteLine($"应用程序监听端口:http:{port}");//,https:{sslport} }).UseStartup<Startup>()).Build().RunAsync();

按上面三步操作之后就可以按自己的配置直接使用域名跑项目了。但是运行起来还是会有点问题的:

​ 在本地由于默认登录用户,导致我项目发布到服务器上之后才发现前面Pomelo.EntityFrameworkCore.MySql预览版的问题,之后在本地找到BaseController.cs在OnActionExecutionAsync方法里面将对应的默认登录的代码块注释掉就能正常登录了

//#if DEBUG
// if (HttpContext.Connection.RemoteIpAddress.IsPrivateIP())
// {
// user = UserInfoService.GetByUsername("masuit").ToDto();
// context.HttpContext.Session.Set(SessionKey.UserInfo, user);
// }
//#endif

然后在本地调试的时候发现是在首页加载时有做区域查看限制的条件判断在BaseController.cs的PostBaseWhere方法里面,现在暂时不考虑其他人使用就把对应的代码块先注释掉:

//.And(p => p.LimitMode == null || p.LimitMode == RegionLimitMode.All ? true :
//p.LimitMode == RegionLimitMode.AllowRegion ? Regex.IsMatch(location, p.Regions, RegexOptions.IgnoreCase) :
//p.LimitMode == RegionLimitMode.ForbidRegion ? !Regex.IsMatch(location, p.Regions, RegexOptions.IgnoreCase) :
//p.LimitMode == RegionLimitMode.AllowRegionExceptForbidRegion ? Regex.IsMatch(location, p.Regions, RegexOptions.IgnoreCase)
//&& !Regex.IsMatch(location, p.ExceptRegions, RegexOptions.IgnoreCase) : !Regex.IsMatch(location, p.Regions, RegexOptions.IgnoreCase)
//|| Regex.IsMatch(location, p.ExceptRegions, RegexOptions.IgnoreCase)) return where;

​ 代码运行时经常会提示:找不到页面;图片加载失败,需替换成自己的图片源;在管理平台部分管理页面无法打开;

现在暂时只考虑到这些问题,后续有办法解决在重新写一篇日记来解决吧。

本文仅供学习参考,如有侵权,请联系删除。

StarBlog和Masuit.MyBlogs博客程序学习使用日记(一)的更多相关文章

  1. javascript - 浏览TOM大叔博客的学习笔记

    part1 ---------------------------------------------------------------------------------------------- ...

  2. .NET作品集:linux下的博客程序

    博客程序架构 本博客程序是博主11年的时候参考loachs小泥鳅博客内核开发的.net跨平台博客cms,距今已有6年多了,个人博客网站一直在用,虽然没有wordpress那么强大,但是当时在深究.ne ...

  3. docker简单入门之使用docker容器部署简单的java web开源项目jpress博客程序

    一.在centos7.3上安装docker 前置条件 x86_64-bit 系统 kernel 3.10+ .检查内核版本,返回的值大于3.10即可 [root@node1 ~]# uname -r ...

  4. js便签笔记(12)——浏览TOM大叔博客的学习笔记 part2

    1. 前言 昨天写了<js便签笔记(11)——浏览TOM大叔博客的学习笔记 part1>,简单记录了几个问题.part1的重点还是在于最后那个循环创建函数的问题,也就是多个子函数公用一个闭 ...

  5. 【分分钟内搭建一个带用户系统的博客程序(一)用户系统】asp.net core的Identity真香,EF真香!

    不用不知道,一用香到爆. 老哥是个屌丝前端,但也想写点web应用耍一耍.之前弄过了NodeJs,也弄过JAVA,最近由于写游戏的原因用C#,索性上手一波asp.net core. 这篇博客记录的是,如 ...

  6. 使用 vue + thinkjs 开发博客程序记录

    一入冬懒癌发作,给自己找点事干.之前博客程序写过几次,php 的写过两次,nodejs 用 ThinkJS 写过,随着 ThinkJS 版本从1.x 升级到 2.x 之前的博客程序也做过升级.但是因为 ...

  7. flask实战-个人博客-程序骨架、创建数据库模型、临接列表关系 --

    编写程序骨架 personalBlog的功能主要分为三部分:博客前台.用户认证.博客后台,其中包含的功能点如下图所示: 数据库 personalBlog一共需要使用四张表,分别存储管理员(Admin) ...

  8. hexo博客的学习笔记

    这篇文章主要的作用是作为 .md文件打开,内部的格式为一个初学者对hexo以及markdown语法运用的笔记 1.Hexo的写文格式 最开始为文章的属性部分,以三横杠-开始,-结束.里面记录了文章的标 ...

  9. 网络搬砖是件苦力活 CMS推荐GHOS博客程序

    搬砖不是技术活,而是苦力(bi)活,富有技术含量的苦力活说不定就是一门可以持续的生意. 我们不生产内容,我们只是互联网的内容搬运工,这是大部分不具备原创能力个人站长的心声.虽然原创能力不够,但是服务目 ...

  10. 在技术胖博客上学习ES6遇到的坑和想法

    第一节:ES6的开发环境搭建 坑1:全局安装babel-cli已经不被官方推荐,改为局部安装(cnpm install babel-cli --save-dev): 坑2:babel src/inde ...

随机推荐

  1. DeepSeek+AnythingLLM打造自己大模型知识库

    DeepSeek+AnythingLLM打造自己大模型知识库 目       录 1.      安装Ollama 2.      下载DeepSeek模型 3.      安装AnythingLLM ...

  2. Huggingface使用

    目录 1. Transformer模型 1.1 核心组件 1.2 模型结构 1.3 Transformer 使用 1.3.1 使用 Hugging Face Transformers 库 1.3.2 ...

  3. 还堵在高速路上吗?带你进入Scratch世界带你飞

    国庆假期高速路的风景 国庆假期正式启动人从众模式,无论是高速公路还是景区,不管是去程还是回程,每一次都堪称经典. 一些网友在经历漫长的拥堵后 哭笑不得地表示 "假期都在堵车中度过了" ...

  4. 查看 OceanBase 执行计划

    使用benchmarksql压测数据库,产生高消耗的sql并测试数据库性能 压测环境部署 benchmarksql下载 git clone https://github.com/meiq4096/be ...

  5. .NET Core常用集合的几个坑

    C#中的常见集合 注意,箭头线不代表继承关系,只代表功能上的加强,如有错误,欢迎指出. 泛型集合时间复杂度 集合类型 添加 删除 查找 访问(索引/键) 遍历 备注 List<T> O(1 ...

  6. 安川MH225机械手CPU单元维修解决方案

    在进行安川机器人cpu单元维修之前,我们需要做好充分的准备工作.首先,了解机器人的使用环境和历史情况,了解机器人出现故障的具体表现,例如:是否有异常震动.过热等现象.其次,准备必要的维修工具和备件,确 ...

  7. FANUC发那科机器人控制箱维修操作流程

    FANUC发那科机器人在工业自动化领域中占有重要地位,其高效.稳定和精确的性能赢得了众多用户的青睐.然而,随着使用时间的增长,可能会出现FANUC机器人控制柜故障,影响到发那科机器人的正常运行.本文将 ...

  8. Thymeleaf判断集合是否为空

    Thymeleaf判断集合是否为空最近项目使用的是thymeleaf.项目架构是Springboot+Thymeleaf. 在判断集合是否为空的时候踩了坑与大家分享. 以下代码是判断集合是否为空的,m ...

  9. QT5笔记:2.可视化UI设计

    2.可视化UI设计 参考视频:https://www.bilibili.com/video/BV1AX4y1w7Nt 窗口的三种类型,每种类型窗体拥有的方法不同: MainWindow:指的是正常窗体 ...

  10. 第二课 - 输入(按键)控制输出(LED)-设备树

    在第一课中学习了如何安装NCS开发环境,以及如何新建一个工程,还有如何构建和下载到开发板.并运行了官方的LED闪烁例程. 设备树 我们继续跟着官方开发者学院的教程来学习第二课的课程.官方课程包含了以下 ...