知识大全 从.NET类库代码来看ASP.NET运行时[2]

Posted

篇首语:学乃身之宝,儒为席上珍。君看为宰相,必用读书人。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 从.NET类库代码来看ASP.NET运行时[2]相关的知识,希望对你有一定的参考价值。

从.NET类库代码来看ASP.NET运行时[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

    好 现在我们知道了ISAPIRuntime对象是托管代码的入口点 那么这个对象是什么时候产生的呢?换句话说 w wp也是一个非瀀?潳楬?托管代码写出的程序 它是在什么时候把 net运行时加载进来的呢?(如果好奇心再强一点 还可以问一问一个工作进程是什么时刻产生并开始运行的 它和应用程序池有着怎样的交互 )完全解释清楚这些问题已经超过了笔者目前的能力范围 还望高人补充或提供资料线索 但目前我们从 net的代码中应该可以推断出 ISAPIRuntime对象和应用程序域是对应的 net在创建应用程序域的时候 就会创建ISAPIRuntime对象 见下面的创建应用程序域的代码    创建应用程序域 /**//*这是System Web Hosting AppDomainFactory类型的Create方法 它调用的是实际工厂的Create方法 */ [return: MarshalAs(UnmanagedType Interface)] public object Create(string module string typeName string appId string appPath string strUrlOfAppOrigin int iZone) /**//*实际工厂是一个AppManagerAppDomainFactory类型的对象 */ return this _realFactory Create(appId appPath); /**//*AppManagerAppDomainFactory Create方法 请看代码内的注释 */ [return: MarshalAs(UnmanagedType Interface)] public object Create(string appId string appPath) object obj ; try if (appPath[ ] == ) FileInfo info = new FileInfo(appPath); appPath = info FullName; if (!StringUtil StringEndsWith(appPath \\\\ )) appPath = appPath + @ \\ ; ISAPIApplicationHost appHost = new ISAPIApplicationHost(appId appPath false); /**//*这个方法内部的调用链非常复杂 它一方面创建了一个应用程序域 一方面返回一个ISAPIRuntime对象 具体这个方法究竟是如何创建AppDomain对象的 大家可以用 JetBrain来跟踪其调用栈 关于这部分内容更详尽的信息 可参见ASP NET Internals The bridge beeen ISAPI and Application Domains一文 另外 如果您使用JetBrain来调试系统程序集的话 有可能会因为缺少相应pdb文件而不能查看完整调试信息 这里提供一个根据已有程序集 先反汇编成中间码 再重新以调试模式生成dll和pdb文件的方法   )生成IL文件: ildasm /tok /byt system web dll /out=system web il )重新生成PDB/DLL: ilasm system web il /DEBUG /DLL /OUTPUT=System Web dll*/ ISAPIRuntime o = (ISAPIRuntime) this _appManager CreateObjectInternal(appId typeof(ISAPIRuntime) appHost false null); o SetThisAppDomainsIsapiAppId(appId); o StartProcessing(); obj = new ObjectHandle(o); catch (Exception) throw; return obj ;

  写在前面的话 网上讲Asp net运行模式的好文章已经很多了 笔者本不用多此一举 另成一文 但从笔者自己的学习经验看 如果学到的这些知识不能对应到类库中的源代码 印象总归不够深刻 大有隔靴搔痒之感 只好自己写上一篇 对这方面的知识做个小小的总结 文中所有内容都是笔者在看了网上很多文章后 结合自己的开发经验得出的一些理解 难免有错误的地方 欢迎批评指出 另外 由于笔者能力所限 很多地方并未说透(真正对应到代码) 也盼高手能够给予补充

cha138/Article/program/net/201311/15293

相关参考

知识大全 asp.net下日期和时间处理的类库

  复制代码代码如下:cha138/Article/program/net/201404/30515

知识大全 ASP.NET上的ReCAPTCHA类库

ASP.NET上的ReCAPTCHA类库  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  reCA

知识大全 ASP.NET 2.0运行时简要分析

ASP.NET2.0运行时简要分析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!概述: 

知识大全 ASP.Net 2.0 发送邮件的代码

ASP.Net2.0发送邮件的代码  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nb

知识大全 ASP.NET入门教程 10.4 创建后台代码文件[2]

ASP.NET入门教程10.4创建后台代码文件[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 ASP.NET入门教程 1.7.4 示例代码目录[2]

ASP.NET入门教程1.7.4示例代码目录[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&

知识大全 ASP.NET入门教程 11.4 在代码中使用角色[2]

ASP.NET入门教程11.4在代码中使用角色[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 asp.net使用代码从文件夹里读取图片

cha138/Article/program/net/201311/14235

知识大全 从asp.net页面发送电子邮件

  我们经常看到在一些博客页面里可以发表评论通过电子邮件通知版主(例如咱们的博客园)那么如何用发送电子邮件呢?我们可以借助NET提供的强大的类库达到目的  首先我们要引入SystemWebMail命名

知识大全 ASP.NET学习笔记之.net代码技巧

ASP.NET学习笔记之.net代码技巧  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一usi