Visual Studio 2017发布ASP.NET Core WebAPI配置转换异常及存储位置咨询
解答:发布后WebAPI中配置转换值的存储位置
哈哈,这个问题我之前也碰到过,一开始懵了好半天——明明发布后app.config看起来没变化,但WebAPI却能读到转换后的值,对吧?其实这是ASP.NET Web项目(包括WebAPI)发布时的配置处理逻辑在搞鬼,我给你拆解清楚:
实际生效的配置文件是
[项目名].dll.config
对于基于.NET Framework的WebAPI项目,发布时VS会把经过转换的app.config重命名为和你的主程序集同名的.dll.config文件,比如你的项目叫MyWebApi,那这个文件就是MyWebApi.dll.config。WebAPI运行时读取的正是这个文件,而不是发布文件夹里那个看起来没变化的app.config(那个只是原始文件的副本,程序根本不会读它)。怎么验证?
- 打开你的IIS发布目录,找到和你WebAPI项目同名的
*.dll文件 - 查看它旁边的
*.dll.config文件,用记事本或VS打开,就能看到所有转换后的配置项了
- 打开你的IIS发布目录,找到和你WebAPI项目同名的
为啥构建时和发布时表现不一样?
本地构建时,VS会直接把转换后的配置输出为app.config(或者说,构建输出目录里的app.config就是转换后的),但发布流程里为了兼容Web项目的部署逻辑,会做重命名处理,这才造成了“配置没转换”的错觉。
内容的提问来源于stack exchange,提问作者beewest
相关产品推荐
相关产品推荐

