![ASP.NET - 具有非托管依赖关系的 DLL 在重新启动时失败,在触摸 bin/ 后可以工作](https://linux22.com/image/693370/ASP.NET%20-%20%E5%85%B7%E6%9C%89%E9%9D%9E%E6%89%98%E7%AE%A1%E4%BE%9D%E8%B5%96%E5%85%B3%E7%B3%BB%E7%9A%84%20DLL%20%E5%9C%A8%E9%87%8D%E6%96%B0%E5%90%AF%E5%8A%A8%E6%97%B6%E5%A4%B1%E8%B4%A5%EF%BC%8C%E5%9C%A8%E8%A7%A6%E6%91%B8%20bin%2F%20%E5%90%8E%E5%8F%AF%E4%BB%A5%E5%B7%A5%E4%BD%9C.png)
我对 IIS 和 ASP.NET 还不熟悉,所以请提前原谅。
我们有一个 ASP.NET 应用程序,它引用了具有各种非托管 C++ 依赖项的托管 C++/CLI DLL。托管 DLL 部署到应用程序的 bin 文件夹中,而非托管 DLL 位于 bin/ 的子文件夹中。
当我执行完整的 iisreset(或重新启动服务器)时,我会在事件日志中收到一条 ASP.NET 警告,提示未处理异常。从那时起,每当我运行需要托管 DLL 的代码时,我都会收到完全相同的异常。
但是...只要我触摸 bin/ 文件夹中的任何内容,问题就会消失。从那时起,使用托管 DLL 的代码就可以完美运行。直到下一次 IIS 重置。
任何想法或建议都值得赞赏。显然我正在寻找
-瑞安
答案1
为了后人,我与 Ryan 合作,这个问题已经解决。
我们意识到,触碰应用程序站点目录(“服务”目录)内的文件会触发应用程序重启,从而缩小了问题的范围。我们发现一个Global.asax.cs
监听Application_Start
ASP.NET 生命周期事件的文件,并且该监听器中存在错误。来源。