Asp.Net网站的的编译与发布原理

news/2024/5/15 1:07:29/文章来源:https://blog.csdn.net/weixin_30530939/article/details/96278008

如下所示创建一个简单的asp.Net Web应用程序

在VS中生成解决方案之后,可以在项目的目录下看到以下的文件:
当我们通过VS将网站发布出去之后,可以看到,最后生成的文件,如下图所示:
我们可以发现,发布之后的项目文件夹内少了很多文件,其实这是VS将aspx页面和一般处理程序以及Global文件等的后台文件都编译成了一个dll文件,这个dll文件存放在bin文件夹内:
对这个程序集进行反编译之后,可以看到我们写的后台代码都编译到这个dll文件中了
这个是一般处理程序的ProcessRequest方法中的代码,可以看到就是我们写的源代码:
此时项目文件夹内的几个文件中只剩下一些简单的声明了,所有后台代码都已经不见了:
Global文件:
一般处理程序:
aspx页面:
然后我们通过以下这句代码分别获得页面,一般处理程序以及Global编译运行时所在的位置:
        System.Reflection.Assembly.GetExecutingAssembly().Location
经过对比可以发现Global文件、一般处理程序、aspx后台代码所在的程序集文件为同一个,而aspx前台页面的代码运行在另一个程序集中,以下为运行的结果:
Global和aspx页面的前台与后台运行文件:
一般处理程序的后台代码:
我们可以看到IIS运行网站时,实际将网站编译之后的dll文件都放到了对应的Framework版本中的临时文件夹中了
即在C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files下,网站中自己写的后台代码与类库以及引用的类库都被编译到了这个临时文件夹下当前项目所在的文件夹下的assembly文件下。
 
 
网站发布后的文件分布图:
 
 
 
 
此时对比发布的网站根目录下的bin文件夹里的dll文件和一般处理程序运行时所在的程序集,可以发现两者是同一个文件:
此时如果删除网站根目录先的bin文件夹内的dll,然后再浏览页面内,可以发现网站无法正常运行:
由上面的结果可以看出,虽然网站中已经存在了一个后台代码的dll文件,但是网站实际运行的是系统文件夹中的那个dll文件,这个应该是直接从网站中拷贝过去的,它们的MD5值完全相同。
在这里可以推测,对于asp.Net应用程序来说,IIS只会编译aspx页面,一般处理程序,Global等文件,但是不会编译其他的类文件,所有的类文件对IIS来说没有用处,IIS只能使用编译好的dll文件。
当网站正在运行时,无法删除系统文件夹中的那个dll文件,显示被IIS Worker Process占用,这个更加说明网站实际运行时使用的是这个dll文件
那么这个IIS Worker Process进程是什么呢,当我们结束当前网站对应的w3wp.exe进程时,系统文件夹中dll被成功删除,这个可以说明,这个dll的调用者正是w3wp.exe这个进行,也说明了w3wp.exe是网站的工作进程。
当我们删除系统文件夹中的dll文件时,再次访问网站时会重新在系统文件夹中再次生成dll文件,而且第一次访问时候报错:
再次访问就正常了
总结:
所以可以总结出,在IIS中运行asp.Net应用程序时,前台页面的代码是即时进行更新和编译的,当我们修改前台代码时,不需要重新编译项目或者重新发布网站,在访问网站时,IIS(或者.Net框架?)检测到页面发生了修改会帮我们重新编译页面,而在修改了后台代码和其他的类文件的时候就需要我们手动对源代码进行重新编译了。


以上的内容都是针对Asp.Net应用程序来说的
对于Asp.Net网站来说发布网站时不会将页面和一般处理程序以及其他一些代码编译成dll文件,只会将源文件和引用的一些类库拷贝到网站的目录下,对于解决方案中的其他类库,也会在编译好之后再拷贝到Bin文件夹中。
在这里可以推测,在asp.Net网站中,IIS或者其他的程序,在有人第一次访问网站时,将App_Code文件里的源代码编译成了dll程序集
当用户第一次请求时才进行即时编译,编译好的文件也是存在于系统文件夹下
如:C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\7812c4be\73872874
此时生成的文件有以下这些:
直接在VS中调试时,情况与上述在IIS中运行类似,只是最后所在的文件目录有所不同,而且会生成很多调试用的文件:
C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\website1\0e58724c\a4f149c8
           
总结:
         Web应用程序和Web网站的前台页面的代码都是在网站运行时,被初次访问时进行编译的,而对于后台代码和网站中的一些类文件来说,Web网站也会在网站第一次被访问的时候被编译,所以,Web网站中的后台代码更改后不需要手动进行编译,而在Web应用程序中,后台代码和类文件都会在发布的时候进行编译,编译成功才能够正常发布,所以对于Web应用程序,修改了后台代码就必须重新编译然后发布。
注:网站编译的临时目录可以在IIS中或者Web.config配置文件中进行配置,一下是IIS中的修改方法:
在服务器级或者网站级的".Net编译"选项中修改编译的临时目录,默认情况下临时目录为网站对应的.Net Framework的版本下的Temporary ASP.NET Files文件夹。

 

转载于:https://www.cnblogs.com/mstmdev/p/5538739.html

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

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

相关文章

中型网站搭建运行思路

转载于:https://www.cnblogs.com/shark1100913/p/5558454.html

编写计科院网站首页的静态网页

界面: 百度网盘 : 链接:https://pan.baidu.com/s/1ZH3cmWRMsfQMPrCcKqXVmQ 提取码:8y1k 复制这段内容后打开百度网盘手机App,操作更方便哦 转载于:https://www.cnblogs.com/huyangrong/p/10565518.html

SEO优化

众所周知,百度采取的是竞价排名:1.最关键的是给钱,钱越多,网站排名越靠前 2.是SEO优化,采取更加符合百度爬虫习惯的页面编写! 通常中小型公司都拿不起这个钱来进行竞价排名,所以他们一般都会有一…

IIS 7.5 发布Web 网站步骤

1. 添加删除程序中,点击打开或关闭Window 功能 , 如图 , 勾选: 2. 打开 vs开发工具 控置台程序 , 注册 aspnet_regiis -i 3.设置应用程序域为指定版本 4.设置应用程序域 .Net Framework 版本 5. 设置应用程序域运行环境 转载于:https://www.c…

php 如何修改页面,【html网站模板代码】HTML页面如何嵌入PHP代码?如何修改免费网页模板的内容?...

【html网站模板代码】HTML页面如何嵌入PHP代码?如何修改免费网页模板的内容?下面就和小编一起来看看吧!HTML页面如何嵌入PHP代码?回答你的靠前个问题:事实上,文件名称不应该改为html或php,但是在在这个浏览器中,有一种方法可以输入html来执…

2017年最新15个漂亮的 HTML 摄影网站模板

摄影是一门艺术,它需要大量的耐心和努力工作来捕捉那些精彩的瞬间。如果你是一位热情的摄影师,想要建立一个网站来展示那些高质量的摄影作品,那么你找对地方了。本文包含15个最佳的摄影网站模板,你可以使用这些 HTML 模板创建自己…

网站嵌入虚拟试衣间方案问题

网站嵌入虚拟试衣间方案问题 好买衣虚拟试衣间目前只接入天猫和淘宝的店铺,只有手机版,不考虑跟其他平台合作。 衣(Yi)没有虚拟试衣功能,PK明星衣品功能可以提供API,虚拟试衣及服饰推荐可以具体沟通后提供定制化的服务&#xff08…

大型网站系统架构演化之路

前言 一个成熟的大型网站(如淘宝、京东等)的系统架构并不是开始设计就具备完整的高性能、高可用、安全等特性,它总是随着用户量 的增加,业务功能的扩展 逐渐演变完善的,在这个过程中,开发模式、技术架构、设…

瞬时响应:网站的高性能架构

什么叫高性能的网站? 两个网站性能架构设计方案:A方案和B方案,A方案在小于100个并发用户访问时,每个请求的响应时间是1秒,当并发请求达到200的时候,请求的响应时间将骤增到10秒。B方案不管是100个并发用户访…

OmniGraffle导入stencils的两个方法以及优质的stencils下载网站推荐

今天写论文,需要画几个电路结构图,可是现在是WannaCry勒索病毒正肆虐的时候,不想用教研室的win7啊!(其实只是想搞清楚mac下到底有没有visio那样好用的可以导入很多模版的画流程图结构图等的利器。。。) 之前…

36氪上的这七家程序员网站你都了解吗?

2019独角兽企业重金招聘Python工程师标准>>> 我始终相信程序员交付的不是代码,是价值,所以在万众创新下程序员成了最受伤的群体,36氪上的好的项目举不胜举,但是真正为程序员服务的都有哪些呢?让我们一起来看…

如何发布一个网站

如何发布一个网站所需材料:网站空间(服务器)、域名、FTP软件、网站源程序步骤:1、首先购买空间、域名根据自己使用的编程语言来选择合适的操作系统。如网站使用ASP.net编写的,请选用Windows系列虚拟主机。使用PHP的&am…

谈谈个人网站的建立(二)—— lucene的使用

首先,帮忙点击一下我的网站http://www.wenzhihuai.com/ 。谢谢啊,如果可以,GitHub上麻烦给个star,以后面试能讲讲这个项目,GitHub地址https://github.com/Zephery/newblog 。 Lucene的整体架构 搜索引擎的几个重要概念…

网址导航类的网站为什么会没落

今天要谈论的话题是关于网址导航的,在我看来,其实这是一种已经没落的网站行业。目前还能生存下来的网址导航有hao123网址导航、2345网址导航,除此之外,还有很多互联网公司推出了适配自己产品的网址导航,例如搜狗网址导…

网站优化怎么做?怎么才会有排名,流量收录

什么是推送? 对于SEO人员应该都不陌生吧,推送就是把网站的链接主动提交给搜索引擎, 确保新的链接可以尽快被收录,同时保护原创(防止别人抄袭,以及转载后导致自己的网站没收录) 为什么我们要去…

免费采集工具之打造网站高质量内容

搜索引擎为什么一直不收录我的网站?为什么我的网站一直没有排名是不是我网站被K了?怎么让搜索引擎快速收录我的网站呢?这是最近很多站长问我的问题,今天笔者就针对这些问题发表一些我的见解。 首先我们要知道SEO做到最后做的是什…

如何使用免费采集器实现高质量网站内容布局

Hello的大家好!昨天我分享了搜狗泛收录怎么做。今天我要分享的是关于网站免费采集器的使用以及如何利用好免费的文章采集器打造网站高质量内容,让你的网站快速收录大量收录,快速上网站SEO排名的方法攻略。 笔者作为一个SEO老油子&#xff0c…

1分钟学会网站采集方法详解

最近很多站长朋友跟我诉苦说网站采集应该怎么做,手动更新难以坚持。网站定时发布文章内容是一件必须要解决的问题,因此今天我将分享一些网站采集的技巧。非常适合想做大量收录以及高权重网站的站长。 首先很多朋友会说,纯采集可能被搜索引擎算…

搜狗批量提交软件-批量提交网站链接

最近很多做搜狗的站长朋友问我搜狗推送工具有用吗?可以批量推送吗?关于搜狗的提交方式有哪些?搜狗推送应该怎么做?搜狗收录怎么大量泛收录?有没有好的搜狗口子可以让搜狗快速收录我的网站呢? 首先搜狗推送肯…

360推送工具-批量推送360网站工具

最近很多站长问我,我的网站360一直不收录是什么原因?360收录到底应该怎么做?别人的360收录几万,几十万是怎么做的?还有实用的做360收录的工具或者说方法技巧。今天笔者统一发表一下我个人的见解。 首先我们网站发布后的…