安装
安装 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 群,群里面有 宇内流云 老哥,非常感谢提供的帮助
总结
- 还是有很多需要注意的地方,版本号、路径等问题
- 出现了问题寻找的资料不多,生态环境还不够成熟