最近买了个简单的服务器,想着搞点花活,就去找了找网上的开源代码,感谢大佬的开源库:(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. go的math/rand随机数生成器

    伪随机数生成器,默认情况下随机数种子是固定的, 注意:固定的随机数种子每次生成的随机数都是相同的随机数序列 一.基础用法 math/rand 包提供了随机数生成的方法.常用的函数包括: rand.In ...

  2. 如何正确配置 .gitignore 以忽略特定文件夹下的文件(除指定子文件夹外)

    在使用 Git 进行版本控制时,.gitignore 文件是一个非常有用的工具,可以帮助我们忽略不需要跟踪的文件或文件夹.然而,有时我们需要忽略某个文件夹下的所有内容,但保留其中的某个子文件夹.本文将 ...

  3. flutter-double小数点相加,会出现小数点很多位

    在我们进行两个double运算时,例如:2..0-1.1 不是想象的输出0.9,而是0.89999999999999999.其主要原因是浮点数值采用二进制系统表示,而在二进制系统中无法精确的表示分数1 ...

  4. 川崎机器人维修kasawaki维护注意事项

    为确保川崎机械臂的正确安全操作.防止人员伤害和财产损失,请遵守下述方框符号表达的安全信息. --注意事项 在进行Kasawaki川崎机器人维修操作前,请注意如下事项以确保安全. 1. 在开始检查之前, ...

  5. thymeleaf 使用th:onclick传递参数问题:

    使用方法:注意:传递参数时如果参数是数字这样写没有问题,但是如果参数是字符串onclick的方法将无法接收到参数并报错,所以参数是字符串时要加单引号.如上图.

  6. oracle - [01] 安装部署

    超级详细的Oracle安装图文详解!手把手教会您从下载到安装! https://blog.csdn.net/weixin_46329056/article/details/125451601

  7. Shell - 脚本案例

    题记部分 一.节点状态监控脚本(nodeStatusCheck.sh) [脚本名称]nodeStatusCheck.sh [监控规则]通过ping的方式监控集群节点状态,检查节点是否失联 [实现方式] ...

  8. css 保留后端 textarea 中的换行与空格字符

    原文链接:https://blog.jijian.link/2020-10-22/css-pre/ 如果后台使用 textarea 输入内容,在前段显示需要保留换行符与空白字符,该如何做? 常规方法 ...

  9. centos安装php环境

    安装 PHP 所需扩展 yum install libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcur ...

  10. 0003 Failed to build the application: build go_beego/src/hello: cannot load

    我使用beego框架快速建立了一个应用,可当我运行 bee run的时候,出现了如下错误 D:\go_beego\src\product>bee run ______ | ___ \ | |_/ ...