zoukankan      html  css  js  c++  java
  • ASP.Net Core 2.2 InProcess托管的Bug:unable to open database file

    最近把项目更新到了ASP.Net Core 2.2,发布之后发现在IIS下使用SQLite数据库不行了,报异常说不能打开数据库。"unable to open database file",奇了个怪了。照理说这个不是权限就是路径错了,权限直接加了Everyone也无济于事,后来换成绝对路径就可以了,那说明确实是路径错了。

    但是写的相对路径肯定是没错的,使用 dotnet 命令来运行也是正常的, dotnet ZKEACMS.WebHost.dll。

    ConnectionString

    "ConnectionString": "Data Source=Database.sqlite"

    后来想起了之前有看过的这篇令人激动的文章:

    就是2.2可以使用In Process的托管模式,说性能有惊天地泣鬼神的提升,就想说会不会是这玩意的问题,毕竟当初升级时也是我主动改的这个:

    <Project Sdk="Microsoft.NET.Sdk.Web">
      <PropertyGroup>
        <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
      </PropertyGroup>
    </Project>

    于是我改了一下web.config,切换成使用旧的模式: modules="AspNetCoreModuleV2" -> modules="AspNetCoreModule",然后程序就正常运行了。

    妥妥的写个issue给微软:https://github.com/aspnet/AspNetCore/issues/6117

    我再使用In Process的托管模式做了一下debug,看到了令人惊奇的结果,这个当前目录竟然变成了IIS的目录,难怪相对路径错了。

    解决方式

    主动设置一下当前目录为程序根目录:

    System.IO.Directory.SetCurrentDirectory(hostingEnvironment.ContentRootPath);
  • 相关阅读:
    阴影及定位
    选择器高级、样式及布局
    css的导入与基础选择器
    html知识
    ORM
    python实现进度条
    MySQL单表查询
    一、HTTP
    mysql4
    练习——MySQL
  • 原文地址:https://www.cnblogs.com/seriawei/p/10179634.html
Copyright © 2011-2022 走看看