前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ASP.Net Core 2.2 InProcess托管的Bug:unable to open database file

ASP.Net Core 2.2 InProcess托管的Bug:unable to open database file

作者头像
Mr. Wei
修改2018-12-27 15:02:13
9190
修改2018-12-27 15:02:13
举报
文章被收录于专栏:ZKEASOFT

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

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

ConnectionString

代码语言:javascript
复制
"ConnectionString": "Data Source=Database.sqlite"

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

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

代码语言:javascript
复制
<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的目录,难怪相对路径错了。

解决方式

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

代码语言:javascript
复制
System.IO.Directory.SetCurrentDirectory(hostingEnvironment.ContentRootPath);

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ConnectionString
  • 解决方式
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档