最近买了个简单的服务器,想着搞点花活,就去找了找网上的开源代码,感谢大佬的开源库:(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. 使用天翼云云容器引擎CCE创建简单nginx服务

    本文分享自天翼云开发者社区<使用天翼云云容器引擎CCE创建简单nginx服务>,作者:b****n 一.创建一个nginx应用. 1.选择资源池,如[杭州2],进入云容器引擎CCE平台页面 ...

  2. 在阿里云ECS上一键部署DeepSeek-R1

    DeepSeek-R1 是一款开源模型,也提供了 API(接口)调用方式.据 DeepSeek介绍,DeepSeek-R1 后训练阶段大规模使用了强化学习技术,在只有极少标注数据的情况下提升了模型推理 ...

  3. 本地部署 DeepSeek Janus Pro 文生图大模型

    Hello, 大家新年好. 在这个春节期间最火的显然是 DeepSeek 了.据不负责统计朋友圈每天给我推送关于 DeepSeek 的文章超过20篇.打开知乎跟B站也全是 DeepSeek 相关的内容 ...

  4. 面试官:谈谈RabbitMQ的队头阻塞问题?

    RabbitMQ 延迟消息的队头阻塞问题是指,在使用死信队列(DLX)和 TTL(消息过期时间)实现延迟消息时,由于队列的先进先出(FIFO)特性,在队列头部消息未过期的情况下,即使后续消息已经过期也 ...

  5. 创建Graphics对象的三种方法

    参考链接:https://www.cnblogs.com/wax01/p/4982691.html 方法一.利用控件或窗体的Paint事件中的PainEventArgs 在窗体或控件的Paint事件中 ...

  6. ATT&CK实战系列(一)

    环境下载 下载靶场环境,并导入虚拟机分别是win2003.win7.winserver2008 配置网络 虚拟机--编辑--虚拟机网络编辑器--添加网络VMnet2--仅主机模式分配的地址是192.1 ...

  7. Typecho的Joe主题新增QQ打开自动跳转到浏览器

    前言 QQ抽风,很多站长的网站都被屏蔽白了,我的也不例外 而且很多人上午解了下午又白,所以我就想做一个跳转,跳转到浏览器访问 然后看到执念有教程,就直接搬过来了,也就当做个备份吧 效果图 QQ内打开: ...

  8. Lobe Chat 数据库版安装和使用教程

    DeepSeek 爆火之后官方网站一直繁忙,不少开发者都开始自己动手部署聊天客户端了. 市面上可供选择的套壳 UI 很多,但是论颜值和功能,还得是 Lobe Chat. Lobe Chat 是什么? ...

  9. Chrome 133 里程碑式更新 - moveBefore, 或开启前端框架未来新纪元?

    相关背景: Chrome 133 版本(将于 2 月 4 日发布稳定版)引入了一个新的 DOM 操作方法:Node.prototype.moveBefore.这一方法虽然看似简单,但其意义重大,因为它 ...

  10. Easyexcel(3-文件导出)

    响应头设置 通过设置文件导出的响应头,可以自定义文件导出的名字信息等 //编码格式为UTF-8 response.setCharacterEncoding("UTF-8"); // ...