Inherts

    在http://mqingqing123.cnblogs.com/archive/2006/01/14/317162.html
里,我介绍了CodeFile来取代Codebehind,可能你会感觉疑惑:ASP.NET工作组花费了很大的时间建立了与.NET1.1不同的后台文件模型,为什么没有更改.NET1.1的Inherits呢?
其实,我感觉是.NET2.0设计时主要为了和ASP.NET1.1的兼容,才不得不使用Inherits。

    对于熟悉ASP.NET1.1并一直使用VS.NET2003的用户来说,他们已经习惯了.NET1.1的web开发模型,这种“习惯”并不仅仅意味这双击Button,系统直接定位到Button按钮的事件处理中,更为主要的是习惯了.NET1.1在部署WEB应用程序的方便:在部署应用程序里,当您将本地开发的程序上传到ISP供应商为你提供的空间里时,您仅仅需要将*.aspx和bin文件夹下的*.DLL文件拷贝到你的空间就可以了,而对于类似*.aspx.cs和*.aspx.resx您可以忽略不计。
    如果您以后想升级应用程序也非常简单,只要将升级后的DLL文件覆盖原来的DLL文件即可。

    然而,在ASP.NET2.0里,正如上篇文件介绍的,*.aspx文件和*.aspx.cs文件都是不完全类(partial class),这就使得想在部署web应用程序前预先编译 *.aspx.cs变得不可能---这是由于这个条件的限制使得ASP.NET2.0默认是不能够将后台文件编译为二进制的DLL文件的。所以web开发人员在部署.NET2.0的应用程序时,只能够拷贝所有的源代码。
    因此,当您使用VS.NET2005进行web开发时,默认的,如果您需要将生成的源代码(*.aspx.cs)连同布局文件(*.aspx)一同拷贝到服务商给你提供的web空间里。

    现在,您是不是对ASP.NET2.0的模型感觉到遗憾?至少我是,看看类似CommunityStarter、blogs的源代码,他们的源文件是如此的多,如果您拷贝到服务器给你提供的空间,需要非常的费时,而在.NET1.1里,我仅仅需要拷贝几个DLL文件就可以了,看来ASP.NET2.0的框架确实存在很大的局限性。

    不过,别着急,问题出现了总需要解决,这个解决办法就是扩展:ASP.NET1.1的Page指令里也就那几个主要的属性,进入CodeBehind已经由CodeFile取代,那么微软的那些程序员就只好拿Inherits开刀--继续保留Inherits以便和.NET1.1兼容。----这应该就是为什么.NET2.0仍然保留Inherits关键字的原因。
    但是接下来还有一个问题:对于同样是.ASPX文件,我们知道.NET1.1的页面可以再.net2.0里运行,那么.NET框架怎么识别用户开发的*.ASPX页面是.NET1.1版本的还是.NET2.0版本的呢?
    这个问题就是由Code*解决,如下:
(1)如果您在Page指令里使用了 CodeFile属性,.NET框架自动认为您采用的是.NET2.0技术,后台文件也默认是不完全类
(2)如果您在Page指令里使用了CodeBehind属性,.NET框架自动认为您采用的是.NET1.1技术,后台文件的类直接作为页面的基类
(3)还有一个默认的,就是您的*.aspx里即没有CodeFile也没有CodeBehind,那么系统如何认为呢?在这种情况下系统仍然认为您是使用.NET1.1的框架技术,其实本人感觉这还是为了考虑兼容性,因为.NET1.1版本里就可以省略CodeBehind,如果让.NET1.1和.NET2.0高度兼容就必须始终以.NET1.1为目标。

    知道了页面如何区分页面后,解下来继续上面的问题,如何解决部署难的问题。在ASP.NET2.0里,提供了一个新命令aspnet_compiler.exe,默认的您可以在系统盘里找到,例如我的winXP系统里的默认位置在 c:\windows\microsoft.net\framework\版本号 目录里。

    aspnet_compiler.exe的使用较为复杂以后会介绍,以后会介绍,在用它之前先介绍它的基本功能。aspnet_compiler.exe会将文件全部编译为二进制文件:清注意这里是全部,也就是使用该编译器后*.ASPX和*.ASPX.CS全部编译为*.DLL,原因还是前面介绍的那个规则:不管什么时候,要编译为DLL文件,都必须提供完整的类。
    现在您可以知道ASP.NET2.0的高明了吧,在部署ASP.NET应用程序时,您可以有三种方式:
(1)传统ASP.NET1.1方式:布局代码*.ASPX和编译后的后台bin文件夹下的DLL文件(部分代码+部分二进制)
(2)默认ASP.NET2.0方式:所有布局代码和所有后台文件以源文件的形式存在(全部源代码)
(3)改进后的ASP.NET2.0模式:此时所有布局代码*.ASPX和后台文件*.ASPX.CS都是以DLL的形式存在。(全部二进制)

    最后,还要说一下全部编译后的二进制的问题,当你编译后可以发现有一个default.aspx文件,可能你会问既然全部是DLL文件为什么还要default.aspx文件呢?这个文件也没有内容,会不会是多余的?
    要理解这个问题就需要转到IIS了,换句话说这就不再是ASP.NET2.0的工作范畴了。
对于客户端请求,IIS首先会根据映射检查您所请求的文件存在不存在,如果不存在就直接提示您所请求的文件没有找到。    可以看到此时ASP.NET2.0框架还没有接管呢,解决这个文件最简单的方法就是不用检测文件是否存在,参考下图(,默认检查文件是否存在是选中的,更为详细的原因,可以参考.BLOGS配置),但是这个步骤虽然不复杂,可以对于许多应用程序来说都需要更改显然非常不现实,现在好了只要有了DEFAULT.asxp不用更改IIS配置也可以了
所以,默认还是需要default.aspx的。


sfaer.JPG

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/269496.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

通孔的作用是什么linux,电路板空洞的作用是什么 如何区分PTH与NPTH两种通孔

如果你有机会拿起一片电路板,稍微观察一下会发现这电路板上有着许多大大小小的孔洞,把它拿起来对着天花板上的电灯看,还会发现许多密密麻麻的小孔,这些孔洞可不是放在哪里摆好看的,每个孔洞都是有其目的而被设计出来的…

Django Step by Step中文版,推荐一下

Diango是Python的一个快速Web开发框架,称为Python的ROR,在limodou的Blog里已经推荐了很久,元旦前后也学习了一下,最近很懒,什么都没有干。文档地址:http://www.woodpecker.org.cn/obp/django/django-stepby…

UVa 11324 最大团(强连通分量缩点)

https://vjudge.net/problem/UVA-11324 题意:给一张有向图G,求一个结点数最大的结点集,使得该结点集中任意两个结点u和v满足,要么u可以到达v,要么v可以达到u。 思路: 找到SCC后进行缩点建图,每个…

关于mysql修改密码 set password for root@localhost = password(‘xxx‘);报错解决方法

mysql> SET PASSWORD FOR rootlocalhost PASSWORD(123456); ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near PASSWORD(123456) at line 1 通过下面的命令…

佳能Linux230快门速度怎么调,80d快门速度怎么调

80d快门速度怎么调导语:佳能80d作为70d的升级版机型改变不是很大,但是也有一些很好的升级。很多朋友都已经入手了这款单反,一些入门的朋友可能对这款单反的操作不太明白。拿到相机之后拍出来的照片并不理想,本文就这款相机做点简单…

身份证照片比对,身份鉴别,人脸实名

详情链接&#xff1a;http://www.haoservice.com/docs/110 基于国家人口库,通过面部识别相关技术鉴证识别用户真实身份,人脸实名 支持格式&#xff1a; JSON/XML请求方式&#xff1a; POST接口备注&#xff1a; 测试表单&#xff1a;<form name"input" action&quo…

ie 7 beta 2出来了

下载地址&#xff1a;http://www.microsoft.com/windows/IE/ie7/ie7betaredirect.mspx

c语言编写源程序内容,编程(C语言源程序代码)讲述.doc

已知 S11/(12)1/(123)…1/(123…N) &#xff0c;当N的值为50时&#xff0c;求S的值。要求&#xff1a;按四舍五入的方式精确到小数点后第四位。#include #includemain(){float s0.0;int n,t0;for(n1;n<50;n){ttn;ss1.0/t;}printf("%7.4f",s);}1.9608把一张一元钞票…

【BootStrap】 概述 CSS

BootStrap BootStrap由Twitter开发&#xff0c;基于HTML,CSS,JS&#xff0c;是一套前端框架。它的特点是对浏览器良好的支持&#xff08;目前市面上所有流行浏览器都可以&#xff09;&#xff0c;兼容移动设备&#xff0c;以及响应式设计&#xff08;响应式CSS自适应于各种设备…

1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains解决

1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column btc.a.applicant_unit which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_modeonly_full_group_by 执行下如下语句&…

祝贺您

如果您阅读到这篇文章&#xff0c;这就意味着您注册的博客已经申请成功。转载于:https://blog.51cto.com/11067/2441

SQL server中DateTime类型字段如何赋值零?

.net 1.1 不支持Sql Server datetime字段为空的情况.net 2.0 开始支持Sql Server datetime字段为空在不支持datetime为空的情况下&#xff0c;Sql Server数据库一般是选择一个特定的日期代表空值&#xff0c;默认的情况下&#xff0c;是1900-1-1

Java DO到DTO转换利用spring 的BeanUtils.copyProperties

Java DO到DTO转换利用spring 的BeanUtils.copyProperties() public static <T> List<T> copy(Object sourceList, Class<?> beanClass) throws Exception {List<Object> sList (List<Object>) sourceList;List<Object> tList new Arra…

c语言记录五个数组编程,C语言经典编程之数组

1、元素互换定义一个整型数组num[10]&#xff0c;随机初始化数组中元素值&#xff0c;然后将头尾元素两两互换&#xff0c;将交换后的数组值输出。【代码】#include int main(void){int num[10] {};int i 0;int temp;for(i 0; i < 10; i){scanf("%d", &num…

java 反射(Reflection) 详解

jAVA反射机制是在运行状态中&#xff0c;对于任意一个类&#xff0c;都能够知道这个类的所有属性和方法&#xff1b;对于任意一个对象&#xff0c;都能够调用它的任意方法和属性&#xff1b;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。 众所周知哈 ja…

c程序语言设计练习题,C语言程序设计练习题(含程序及参考答案)

《C语言程序设计练习题(含程序及参考答案)》由会员分享&#xff0c;可在线阅读&#xff0c;更多相关《C语言程序设计练习题(含程序及参考答案)(47页珍藏版)》请在人人文库网上搜索。1、1、定义一个函数int fun(int a,int b,int c)&#xff0c;它的功能是&#xff1a;若a,b,c能构…

终于可以放下心来了,呜呜...

从上周六开始到今天早上&#xff0c;一直在为开题报告的事情受煎熬。想题目想了一天半&#xff0c;实际写出来也就半天的时间差不多&#xff1b;交上去了之后还要担心着是不是会打回来重写。。。呜呼。。。 终于早上等到了回复&#xff0c;得到了自己想听的那些话&#…

mac上安装zookeeper教程

下载 下载tar包解压&#xff0c;推荐使用3.5.9版本&#xff0c;不要使用3.6以上的高版本&#xff0c;它jdk1.8冲突&#xff0c;也不要直接brew install zookeeper--默认最高版本 国内镜像下载地址&#xff1a; http://mirrors.hust.edu.cn/apache/zookeeper/stable/ 下载 ap…

10、自学——Linux的学习进度与任务【用户和用户组相关操作】

用户和用户组相关操作 用户和用户组定义&#xff1a; 用户&#xff1a;资源获取标识符&#xff08;资源分配&#xff09;&#xff0c;是安全权限模型的可信要素之一 用户组&#xff1a;用户组是指多个用户的集合&#xff0c;方便对一类需要同样权限的用户授权 密码&#xff1a;…