在Asp.Net中,卷影复制可以在不卸载应用程序域的情况下更新应用程序域中使用的程序集.由于Mvc Core不支持AppDomain而无法加载不同版本的程序集.我正在寻找一种在运行时更新程序集而无需卸载或停止站点的方法.我的目标是使用新版本更新站点(如果在远程服务器上可用).
在.net框架中可以在单独的AppDomain中加载程序集然后卸载它.在.net核心AppDomain不可用,并由AssemblyLoadContext取代.我可以将程序集加载到AssemblyLoadContext,如下所示:
var assembly = AssemblyLoadContext.Default.LoadFromStream(stream);
Run Code Online (Sandbox Code Playgroud)
有没有办法卸载它?
当调用DbContext.SaveChange()方法且ChangeTracker更改时,我不会更改令牌:
public override int SaveChanges(bool acceptAllChangesOnSuccess)
{
if (SettingChanged() == true)
{
}
return base.SaveChanges(acceptAllChangesOnSuccess);
}
Run Code Online (Sandbox Code Playgroud)
和我的DbChangeToken calss:
public class DbChangeToken : IChangeToken
{
private DateTime _lastModified;
private DateTime _lastRequested;
public bool HasChanged
{
get
{
var result = _lastModified >= _lastRequested;
_lastRequested = DateTime.Now;
return result;
}
}
public bool ActiveChangeCallbacks => true;
public IDisposable RegisterChangeCallback(Action<object> callback, object state) => EmptyDisposable.Instance;
}
Run Code Online (Sandbox Code Playgroud)
我的目标是每次调用SaveChange方法时都更改_lastModified。