马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
迩来买了个简朴的服务器,想着搞点花活,就去找了找网上的开源代码,感谢大佬的开源库:(https://gitee.com/ysgdaydayup/DotNetGuide)
在上面有列开源的博客框架,我是下了两个:一个StarBlog,一个:Masuit.MyBlogs,两个都算是在本地上跑起来了,其中Masuit.MyBlogs已经在服务器上运行起来了,不过还有很多报错的,这两套源码前前后后折腾了一个来星期(上班抽闲搞的,放工抵家要陪小孩,也重要是本人技能太菜)。
从现在的使用环境来看,StarBlog更雅观,但更适合个人使用,数据库使用的sqllite,算是没有持久化生存数据的。Masuit.MyBlogs相对更商业化,博客相关的评论,分类,广告之类的功能更加完善。
好了吹水的暂时就先说这么多吧,现在先聊聊在使用StarBlog上遇到的一些问题。
- StarBlog是有两个代码仓库的,一个是StarBlog一个是StarBlogAdmin,在对应大佬的开源主页上都能找到,因为分两个仓库一开始我以为只是一个空壳子框架,导致放弃。
- 开源库里也有说明,不过这里还是在说一遍:前端依赖的包里包罗bootstrap5-treeview,以是在install包源的时候最好先排除bootstrap5-treeview之后先
不然下载包源的时候会不停报错,导致非常,这个折腾了我差不多一个多小时,还是在看了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使用也是折腾了一会。下面讲一下要怎么操作:
- 起首appsettings.json里面的UseRewriter先改成WWW.虽然不知道这一步有没有用,但是还是改了。
- 在把PrepareStartup.cs里面SetupHttpsRedirection方法里面的代码全部解释掉。
- 在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;
复制代码 代码运行时经常会提示:找不到页面;图片加载失败,需替换成自己的图片源;在管理平台部门管理页面无法打开;
现在暂时只思量到这些问题,后续有办法解决在重新写一篇日记来解决吧。
本文仅供学习参考,如有侵权,请联系删除。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
|