【发布时间】:2022-01-20 00:55:38
【问题描述】:
我有一个仅使用 API 的网站(无页面),一旦启动就会终止。
我在事件查看器中发现以下错误。
Application: w3wp.exe
CoreCLR Version: 6.0.21.52210
.NET Version: 6.0.0
Description: The process was terminated due to an unhandled exception.
Exception Info: System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.EntityFrameworkCore, Version=6.0.1.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'. The system cannot find the file specified.
File name: 'Microsoft.EntityFrameworkCore, Version=6.0.1.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'
at Program.<Main>$(String[] args)
还有……
Application '/LM/W3SVC/18/ROOT' with physical root 'C:\inetpub\wwwroot\tt.railtrax.com\' hit unexpected managed exception, exception code = '0xe0434352'. First 30KB characters of captured stdout and stderr logs:
Unhandled exception. System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.EntityFrameworkCore, Version=6.0.1.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'. The system cannot find the file specified.
File name: 'Microsoft.EntityFrameworkCore, Version=6.0.1.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'
at Program.<Main>$(String[] args)
当我查看部署文件夹中的 Microsoft.EntityFrameworkCore.dll 时,它似乎是 6.0.21 版。
包管理器说我安装了 6.0.1。所以我不知道为什么我有 6.0.21,或者它是否应该适用于该版本。
有谁知道这些版本差异是否重要,或者我还能尝试解决什么问题?
该项目在我自己的计算机上运行良好。我最近升级了包管理器中的所有建议包。我认为它是因此而发生的。
更新:
一些附加信息:
- 从错误消息中可以看出,我遇到问题的项目是 TTRailtrax。
- TTRailtrax 依赖于 RailtraxCore,它安装了 Microsoft.EntityFrameworkCore.dll。
- 我正在部署到本地文件夹,然后手动将这些文件复制到服务器。这一直有效。
- 我认为唯一改变的是我更新了推荐的 NuGet 包。
- 该项目在我的本地计算机上继续正常运行。
- 我已确认我的本地计算机和服务器上存在相同版本的 Microsoft.EntityFrameworkCore.dll。
- 我已经清理了我的解决方案。
- 我现在卸载并重新安装了两次 Microsoft.EntityFrameworkCore.dll。
- 我在 IIS 上重新启动了应用程序几次。
- 我已经多次重新部署到服务器。
- 我已将 Visual Studio 更新到最新版本。
更新:
经过进一步调查,我发现我的 bin\Release\net6.0 文件夹包含产品版本为 6.0.1 的 Microsoft.EntityFrameworkCore.dll。但是在我的部署文件夹中,该文件的产品版本为 6.0.0。
这似乎很可能与我看到的问题有关。在什么情况下,部署文件夹中的 DLL 版本会与 bin 文件夹中的不同?
我尝试从 bin 文件夹中复制文件,但没有帮助。
【问题讨论】:
-
您是如何在其中实际发布和运行的?
-
@DanielA.White:我发布到一个文件夹,然后将这些文件复制到我的服务器。这在过去一直有效。
-
使用框架是一步,但使用 .net 核心,我认为您必须将其发布为独立的
-
您的站点是否具有也使用 efcore 的依赖项?所有依赖项是否都是最新的版本? (nuget 包管理器合并选项卡)。在发布时合并不匹配的版本之前,我已经拥有它,并且引用旧包的后期构建项目覆盖了早期构建的后期包(2个项目,projectA使用libraryX v1,projectB使用libraryX v2,project B 先构建,然后 A 构建并用 A 使用的旧 libX 覆盖 B 拥有的较新 libX)
-
从您的项目中删除所有
bin和obj隐藏文件夹>> 清理解决方案>> 重建解决方案表单构建菜单。再次发布。这可能会解决您的问题
标签: c# asp.net-core .net-core entity-framework-core .net-6.0