安装

安装 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  #指定站点配置,推荐站点配置名与站点保持一致

新建默认项目运行示例

09590200e9

实战

当前环境版本号

Mono/5.16.0.220 at 2019.01.26
Jexus/5.8.3.18 Linux

1019104bda

项目包的版本号

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

1023575ffb

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群,群里面有 宇内流云 老哥,非常感谢提供的帮助

总结

  • 还是有很多需要注意的地方,版本号、路径等问题
  • 出现了问题寻找的资料不多,生态环境还不够成熟
回复
昵称
邮箱
链接
ˆ