• 全部
  • .NET Framework
  • ASP
  • Web Services
  • .NET互联网桌面应用
  • VB
  • 图表区
  • 分析与设计
  • 组件/控件开发
  • AppLauncher
  • 问答

.net core 2.2开发的应用,部署到IIS环境,应用自身重启问题?

nihao955 2020-11-20 01:12:46
.net core 2.2开发的应用,部署到IIS环境,为了实现插件安装卸载功能, 需要重启应用使设置生效,请问IIS环境如何在应用内实现重启自己?
...全文
9400 点赞 收藏 6
写回复
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
1、停用PluginA:这时候应该有条命令发往:数据库、内存、或者硬盘等一些共享变量的地方。 2、在读取插件的时候,可以根据变量,做一个判断,也许dll加载后无法移除,但你的业务应该可以控制根据变量只加载,而不调用具体的方法。
回复
nihao955 2020-11-24
谢谢各位的解答,我的项目大体结构是这样的: 主项目:例如Main 用.net core 2.2开发,这个是暂时改不了3.0 插件项目: 例始PluginA 用.net core 2.2开发的webapi, 项目增加一个注册文件Regist类,把本插件需要注册的服务写在里面,项目生成文件,放到 Main下 plugins目录,Main启动的时候在Startup里加载plugins里的插件dll, 注册Regist里面的服务,加载成功后在Main项目swagger可以看到PluginA提供的接口。这个如何做到热插拔呢,比如我在后台把PluginA停用, 不重启应用的情况下swagger里PluginA的接口就去掉?
回复
.Net Core 3.0可回收程序集加载上下文AssemblyLoadContext新增了Unload方法,实现了程序集的热插拔,是因为更新重启吗?core热拔插就好啦
回复
wanghui0380 2020-11-22
在目前的架构里整个核心其实是 SeviceCollections.AddXXXXXX<XXXXXX> 以及各种Contexthost,ContextFactory 以及socpe 生存期 所以,不要问我们,你写的为啥要重启。把你的代码发出来,告诉我们你怎么add的“插件服务”,怎么设计的插件上下文,怎么写的插件生存期 如果我说,我认为插件是瞬时的,每次访问都是瞬时加载的,可以不?那么按照那个园子的各种大仙的教育,这种瞬时的应该怎么办 如果我说,我认为插件是半瞬时的,他的配置文件和目录没有任何改变的,他不重新加载。那么他的生存期是什么,我们一个在那些大仙的教育里,是插到哪个Context的所谓中间件里面去完成 如果我说,我认为插件是永久的,他就应该在下次启动的时候生效,那么我们Add到那里 总之,你应该做的,不是来问我们。而是确定好,你想怎么样。他依赖的上下文是什么,他的生存期是什么。然后,还是找那些园子的大仙们折腾把,因为如果你无法自己说他应该怎么样,那么你只能跟着那些大仙们去搞项目了
回复
吉普赛的歌 2020-11-21
写 批处理 或 powershell 脚本来重启应用程序池就可以了。
回复
插件本身就是不重启、“热插拔”的。干嘛要重启?插件只是让符合某接口的插件的旧版本对象们都卸载、获得新版本的一些对象,宿主进程根本不重启。
回复
相关推荐
发帖
.NET技术社区
创建于2007-09-28

5.8w+

社区成员

.NET技术交流专区
申请成为版主
帖子事件
创建了帖子
2020-11-20 01:12
社区公告
暂无公告