安装 Jexus
服务,https://jexus.org/
安装jexus独立版的命令是:curl https://jexus.org/release/x64/install.sh|sudo sh
Jexus“独立版”指的是自带.net运行时(mono),不需要在客户服务器安装mono就能正常运行的Jexus版本,该版本只支持 64位Linux操作系统。
注:运行安装命令,需要操作者有root权限。
Jexus包括如下操作命令(首先cd /usr/jexus
):
sudo ./jws start #启动
sudo ./jws stop #停止
sudo ./jws restart #重启
修改默认配置或新建一个配置,配置具体的参考官方说明
vi /usr/jexus/siteconf/default
# 指定端口、路径
port=80 #端口
root=/ /netnr/site/demo
#网站URL根路径(虚拟目录)和对应的物理路径,两个路径字串之间必须用空格分开
/usr/jexus/jws start
/usr/jexus/jws start default #指定站点配置,推荐站点配置名与站点保持一致
新建默认项目运行示例
当前环境版本号
Mono/5.16.0.220 at 2019.01.26
Jexus/5.8.3.18 Linux
项目包的版本号
Microsoft.AspNet.Mvc v5.2.7
Microsoft.AspNet.Razor v3.2.7
运行,问题来了
未能找到 Razor 宿主工厂类型: System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.4.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35
Version=5.2.4.0
就是上面对应的 Microsoft.AspNet.Mvc
版本号;看这样子,应该是不支持高版本,尝试切换版本同时参考新建默认项目的版本号,发现目前的版本支持情况:
Microsoft.AspNet.Mvc v5.2.4
Microsoft.AspNet.Razor v3.2.4
Absolute path information is required.Parameter name: assemblyFile
翻译:绝对路径信息是必需的。参数名称:assemblyFile
路径问题,出现这个问题是在登录的时候,即EF第一次连接数据库的时候,与路径相关的代码?想到了反射注册实体类的代码
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
string assembleFileName = Assembly.GetExecutingAssembly().CodeBase.Replace("Netnr.Data", "Netnr.Mapping").Replace("file:///", "");
Assembly asm = Assembly.LoadFile(assembleFileName);
var typesToRegister = asm.GetTypes()
.Where(type => !string.IsNullOrEmpty(type.Namespace))
.Where(type => type.BaseType != null && type.BaseType.IsGenericType);
foreach (var type in typesToRegister)
{
dynamic configurationInstance = Activator.CreateInstance(type);
modelBuilder.Configurations.Add(configurationInstance);
}
base.OnModelCreating(modelBuilder);
//表名不复数
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
变量assembleFileName
不对?,输出日志发现是有问题:
netnr/site/netnr/Bin/Netnr.Mapping.dll
前面少了一个斜杠/
,改一下
if (!assembleFileName.Contains(":"))
{
assembleFileName = "/" + assembleFileName;
}
Assembly asm = Assembly.LoadFile(assembleFileName);
在 Windows 系统上,得到的路径一般是: D:/Work/xxxx ,有一个冒号:
还有一个问题没说,路径问题解决后,连接数据也出现了问题,是Jexus版本的问题,更新到最新就行了
以上的问题解决方式是进了Mono群,群里面有 宇内流云 老哥,非常感谢提供的帮助