運行環境 操做系統 開發工具 frameworks .Net Core SDK 版本 託管運行web
本地 Win10 VS 2015 net461 2.1.401 Kestreljson
服務器 WIn Server 2012 --- ----- 1.0.0-preview2-003121 IIS windows
開發作了以下相關修改:服務器
把 App.config 所有配置所有移植到 appsettings.json。讀取配置的文件同時從一個項目到另一個項目,並由此升級了 Nuget 相關的包。app
出現問題:工具
本地用開發工具能夠正常調試編譯發佈, 到服務出現程序清單與加載的dll 版本不一致(Microsoft.Extensions.Configuration.Abstractions.dll 爲1.0.0.0, 配置須要加載 1.1.0.0)開發工具
嘗試解決:spa
用本地的新版本替換服務器舊版本操作系統
出現新問題: ASP .NET Core HTTP Error 502.5 – Process Failure .net
嘗試解決: 升級服務 sdk 版本,錯誤依舊,安裝 .NET Core Runtime & Hosting Bundle 對應的版本,錯誤依舊,修改web.cofig modules="AspNetCoreModule" 爲 modules="AspNetCoreModule2" 提示找不到模塊
還原 Microsoft.Extensions.Configuration.Abstractions 版本依舊沒法啓動, 只有刪除升級的 sdk 與runtime,可是問題依舊。
最終只得在本地開發環境, 經過 Nuget 管理程序包降級 Microsoft.Extensions.Configuration.Abstractions 的版本後從新發布,發佈程序在服務器才能夠正常運行~~~~
本覺得大功告成,然而,本地直接運行程序調試出現問題:
查看本地 debug 文件下面 exe.cofing 配置,確實指定了 1.1.0.0 版本。 手動修改後,運行程序 ,仍是出現錯誤。
此次仔細查看異常詳情:
=== 預綁定狀態信息 ===
日誌: DisplayName = Microsoft.Extensions.Primitives, Version=1.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
(Fully-specified)
日誌: Appbase = file:///E:/xxx/bin/Debug/net461/win7-x64/
日誌: 初始 PrivatePath = NULL
調用程序集: Microsoft.Extensions.Configuration.Abstractions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60。
===
日誌: 此綁定從 default 加載上下文開始。
日誌: 正在使用應用程序配置文件: E:\xxx\bin\Debug\net461\win7-x64\Siyan.MessageService.Web.exe.Config
日誌: 使用主機配置文件:
日誌: 使用 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config 的計算機配置文件。
日誌: 在應用程序配置文件中找到重定向: 1.0.0.0 已重定向到 1.1.0.0。
日誌: 策略後引用: Microsoft.Extensions.Primitives, Version=1.1.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
日誌: 嘗試下載新的 URL file:///E:/xxx/bin/Debug/net461/win7-x64/Microsoft.Extensions.Primitives.DLL。
警告: 比較程序集名稱時發生不匹配: 次版本
錯誤: 未能完成程序集的安裝(hr = 0x80131040)。探測終止。
好像煥然大悟,以爲勝利唾手可得了。趕忙到本機配置文件(machine.config )查看,並無找到相關配置。清理解決方案,清理項目再次運行,問題還在,有點崩潰的感受!
最後,只有出絕招了,直接強制刪除 exe.config 文件 ,再次生成, 運行調試,問題解決!!!
總結: 對.net core 項目部署發佈不熟悉,走了不少彎路,其實只需刪除本地 bin 目錄下面 exe.config 文件從新生成便可,由於 vs 自動清理不會清理舊的此文件,形成新的改動沒法同步,干擾問題緣由查找與解決!
.Net Core 官方配置可查看:https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-2.2