我尝试通过将程序集添加到bin文件夹来在运行时加载其他WebAPI控制器。此时WebAPI应用程序重新启动,当WebAPI尝试注册所有控制器(旧的和新的)时, HttpControllerTypeCache 和 DefaultHttpControllerSelector 内部缓存只返回旧的,缓存的控制器列表并且没有加载新的。
奇怪的是,我的应用程序进程没有重新启动,只有应用程序是,所以要么我在这里遗漏了一些东西,要么我应该清除控制器缓存。我试图重新启动IIS和IIS WebSite,应用程序池,终止进程并且新的ddls不会加载(根本没有意义)。正确重启应用程序并加载新dll的唯一方法是重建WebAPI项目,再次奇怪。
我试图清除控制器缓存,但无法找到正确的方法,通过查看源代码,我可以看到所有内容都是私有的,内部的等等。
是否有良好的扩展点可以启动并清除缓存,或者IIS中是否存在某些设置会导致此类行为?
环境: Windows 10,.NET 4.5.1,IIS 10