WAS回收应用程序池后,使用Unity解析实例会失败
我使用 Unity 来解析我的实例。包括 WCF 服务。
但我发现了一个技巧问题。 我将 WCF 程序部署到 IIS (WAS),并且可以正常运行我的 Web 服务。
IIS(WAS)回收应用程序池后,我确定我的注册代码已被执行。 但现在 Web 服务抛出异常,比如说
“异常发生时:解析时。”
然后我从IIS服务记录信息,据说我没有注册这种类型。
I use Unity to resolve my instance. Include WCF service.
But I found a trick problem.
I deploy my WCF program to IIS (WAS), and it's ok for running my web service.
After IIS(WAS) recycle application pool, and I'm sure my register code has been executed.
But now web service throw a exception, say
"Exception occurred while: while resolving."
Then I log information from IIS service, it's say I don't register this type.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我自己解决了这个问题。
当应用程序池回收并创建启动新的应用程序池时,所有DLL都会复制到新的Asp.Net模板文件夹中。
当我强制将所有“bin”DLL 加载到 AppDomain 时,我在 bin 的程序集中注册了一个类型。不在 Asp.net 临时文件夹程序集中。所以Unity认为这是差异类型。
现在我更改了将程序集加载到当前域的方式
然后问题解决了。
I has resolved this problem by myself.
When application pool recycle and create start a new application pool, all DLL will copy to a new Asp.Net Template Folder.
When I force to load all "bin" DLLs to AppDomain, I register a type in bin's assembly. Not in Asp.net Temp Folder assembly. So Unity thought it's difference type.
Now I change the way to load assembly to current domain
Then problem fixed.