【发布时间】:2021-06-02 14:41:09
【问题描述】:
在 Blazor 页面中,当我将模型“投射”到它的实际给定类型时,我遇到了这个奇怪的错误。错误是这样的:
Unable to set property 'Model' on object of type 'CSBApp.ExtHdr'.
The error was: [A]TQ.ModelExt cannot be cast to [B]TQ.ModelExt.
Type A originates from 'TQ.Exts, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' in the context 'Default'
at location 'C:\_work\Server.SSB\bin\Debug\net5.0-windows\TQ.Exts.dll'.
Type B originates from 'TQ.Exts, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' in the context 'Default'
at location 'C:\_work\Server.SSB\bin\Debug\net5.0-windows\TQ.Exts.dll'.
好像加载了两个相同的程序集!
object Model = ...; // actually a ModelExt
var a1 = Model.GetType().Assembly;
var a2 = typeof(ModelExt).Assembly;
if (a1 != a2) {
DBG.Log("merde...");
}
程序集 a1 和 a2 具有相同的名称、版本和位置,但 m_assembly 不同。
这怎么可能??
【问题讨论】:
-
从 AppDomain.AssemblyLoad 事件中记录堆栈跟踪?
-
从一开始就发生(只要 ASP.Net 可用) - 因为重新构建不会重新启动站点,而只是加载具有相同名称的另一个程序集与请求相关的所有对象- 缓存/存储在内存状态中的类型不匹配,看起来完全一样...
-
@Alexei 我使用的不是 IIS,而是一个 asp.net 核心独立服务器。服务器每次都会重新启动。
-
@Lakeman 是的,它被加载了两次......一次来自 Assembly.LoadFile,后来来自无法识别的本机代码
标签: c# asp.net-core razor blazor razor-pages