asp.net-mvc – 加载程序集时会发生什么?
在我的ASP.NET MVC应用程序中,我有以下设置:
<runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <probing privatePath="bin;extras"/> 我在视图中引用了位于extras文件夹中的程序集,它们运行良好(使用<%@ Import Namespace =“myNameSpace”%>). 我的问题 >调用该行时会发生什么? 解决方法
1)导入实际上并没有在运行时做任何事情.这是一个编译时的便利,只允许您使用非限定名称引用类型,例如Environment而不是System.Environment.
2)使用常规装配探测规则加载装配. CLR在这些私有探测路径之前检查各个位置,因此记住这一点很重要.如果引用强名称程序集并希望在私有探测路径中找到该程序集,则首选GAC中具有相同强名称(名称,版本,公钥等)的程序集.这有时会导致意外行为,通常是由于在AssemblyInfo.cs中对汇编版本进行硬编码而忘记更新它. 3)加载后,如果不卸载AppDomain,则无法卸载程序集.但ASP.NET使用“影子复制”,这意味着在加载之前将程序集复制到临时路径.这应该使原始组件解锁并且能够被覆盖.在我的头顶,我不知道为什么你会得到关于锁定组件的错误.在普通的Windows应用程序中,这是完全正常的和预期的.但ASP.NET的设计使您可以在应用程序运行时覆盖内容,代码,程序集等,从而产生#4. 4)在实践中,没有.由于无法卸载程序集,因此无法在不重新启动Web应用程序的情况下升级程序集.从技术上讲,您可以加载多个版本的程序集,但这不会为您提供所需的结果.任何编译时引用仍将引用旧程序集,如果您尝试使用新程序集,则会获得各种无效的转换异常.但正如我在#3中所说,ASP.NET升级程序集应该像替换文件一样简单,并且应该自动发生.您不必手动重新启动IIS或工作进程. 以下链接可能会引起关注. How the Runtime Locates Assemblies UPDATE (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc-3 – MVC关注点分离
- asp.net-mvc – EntityFunctions.CreateDateTime问题与linq
- asp-classic – IIS Express是否支持ASP Classic?
- ASP.NET压力测试
- asp.net – 将图像转换为字节以存储在数据库中
- 如何在ASP.NET MVC网站中为cookie设置“安全”标志?
- asp.net-web-api – 如何将OData过滤器转换为LINQ表达式?
- asp.net – .NET VirtualPathProviders和预编译
- asp.net-mvc – 如何填充mvc剃刀部分视图
- 为什么要使用ASP.NET Membership安全模型?
- 如何在我的ASP.NET应用程序中创建“通用错误”页
- asp.net-mvc-4 – 在MVC4中调用DotNetOpenAuth T
- asp.net-mvc – 使用JSON结果填充下拉列表 – 使
- 在剃刀mvc 4 rc清空第一行
- asp.net-mvc – ASP.net Web API和System.Net.Ht
- ASP.NET 5中的子域路由
- asp.net-mvc – 你在哪里把非控制器,非模型代码放
- asp.net-mvc – VB.NET中的ASP.NET MVC 4 HtmlHe
- asp.net-core-mvc – 什么是Asp.Net Core MVC中的
- c#初学-多线程中lock用法的经典实例