解决ASP.NET网站发布问题

news/2024/5/10 7:09:10/文章来源:https://blog.csdn.net/weixin_30325071/article/details/95348316

目录

前言

开始

aspx.cs文件放到单独的类库项目

一个可选择勾选页面的发布工具:LimusicAddin

前言

Asp.net 发布分为:动态编译和预编译。预编译又分为:In Place Pre-compilation Pre-compilation for Deployment。关于asp.net编译,推荐Artech写的:

深入剖析ASP.NET的编译原理之一:动态编译(Dynamical Compilation)

深入剖析ASP.NET的编译原理之二:预编译(Precompilation)

本文讲述的编译都是预编译中Pre-compilation for DeploymentUpdatable Pre-compilation。如图所示:

 

开始

来到新公司的这段时间,经常听到同事们抱怨:只是改了几个页面,每次都要将整个网站发布一遍,然后从上百个文件中仔细的挑选自己改的那几个页面。

仔细想想,以前开发的网站都是客户定制的,网站一交付,基本就不会再修修改改了,或者根本就不发布网站,直接把源码放到IIS中,故不会频繁发布网站。

来到新公司之后,开发的是公司自己的在线产品,经常需要对网站升级、修改,因而需频繁的发布网站。

对需要频繁发布网站的团队来说,vs自带的发布网站工具,带来的痛苦有:

a、每次需整个发布一遍,特别耗时间。页面越多,预编译就越慢。

b、需要仔细挑出自己修改过的aspx页面和bin下对应的dll文件。同样是:页面越多,越不容易找到,特别是dll

 

听说博客园博客程序中.aspx.ascx文件总共加起来有3000多个,使用fixednames编译需要30分钟,呵呵~~

那怎么办呢?

以下提供两种解决方法:

aspx.cs文件放到单独的类库项目

将所有的aspx.cs文件集中放到同一类库项目下,意味着你揽了ASP.NET预编译的活。也就是说预编译给每个页面生成的代码,你需要自己手写。

先来对比一下正常发布,页面文件内容的变化:

Web.config设置:

 

Default.aspx:

 

发布前:

 

发布后:

 

 

Default.aspx.cs:

 

发布前:

 

发布后(用.Net Reflector打开bin目录下对应的dll:

 

由此可见,预编译做的工作:

  1. 为每个页面单独生成一个dll,并在class中为页面上所有服务端空间,声明一个以id命名的控件全局变量。(页面中不用服务端控件,全部是原生的html开发,此可忽略)
  2. 解析web.config中的设置。例如:page节点、profile节点。(可以用基类代替page节点设置,可以用全局变量代替profile设置,或者写到appsetting节点下)
  3. 编译global.asaxApp_global.asax.dll(不用global.asax,所有的事件方法都是在HttpModule中定义)
  4. 编译app_codeapp_code.dllweb.config中的Profile节点生成在app_code中的ProfileCommon中。(基本没用过profile,通常使用公共静态属性代替)

     

Demo

  1. 打开vs,新建一个网站。
  2. 添加一个类库项目:AspxCsCode,并添加System.Web的引用
  3. 为网站添加类库项目的引用。
  4. 以上述Default.aspx为例,将Default.aspx.cs剪切到AspCsCode项目中。如下图:
  5. 修改Default.aspx.cs代码:

     

  6. 修改Default.aspx

     

  7. 生成网站。在浏览器中查看default.aspx

    点击登录è

     

     

总结

优点:

  1. aspxcs分离了aspx完全可以交给前端工程师,Cs交给后端工程师,分工更明确,开发效率更高。
  2. 支持单元测试。以往开发页面,想测试aspx.cs中某个方法,只能浏览页面。如果放到类库项目下,单元测试将变得很方便
  3. 网站发布时很快。编译类库项目是相当快的。如果没用到Global.asaxApp_Code的话,基本上都不需要发布了。

缺点:

  1. 揽了ASP.NET预编译的活。如果项目中不用服务端控件,这个基本可以忽略
  2. 发布的时候,有覆盖他人页面的风险。跟团队成员讨论,部分人觉得,把所有页面的cs文件放到一个类库项目中,

    当我修改了a.aspx.cs,b.aspx.cs也被别人修改时或者还没有被签入,我没有获取最新版本,然后就把类库编译成的dll,更新到服务器上从

    而会出现问题,更偏好Asp.net预编译生成的一个页面对应一个dll的方式,只发布自己改的文件,将影响面积降到最低。

    个人觉得这个缺点的理由不够充分,既然要发布,那就必须保证你编译的所有代码版本不应该比服务器上的版本低,

    如果这个保证不了,那怎么能保证页面引用的其他dll是最新的呢,而且如果照上述逻辑,

    asp.net mvc岂不是也有这种情况?给每个cs都单独生成一个dll岂不更好?

    故而认为,不管哪种方式都有覆盖他人代码的风险,只是这种方式风险稍微大些。

    

一个可选择勾选页面的发布工具:LimusicAddin

aspx.cs文件放到单独的类库项目其实是一种变通的方法,本质上并没有解决vs自带的发布网站工具每次都要预编译整个网站的缺陷。那只能自己开发个插件了。

详细介绍:

可发布指定的ASP.NET页面的插件:LimusicAddin

 

转载于:https://www.cnblogs.com/limusic/p/3378023.html

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

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

相关文章

弊端重重的传统影楼,优兔家摄影网站赋予新生机

关键词:网站建设,H5响应式网站,摄影网站建设 关于优兔家 U2(优兔家)新派视觉摄影,由资深广告创意人主理,是一个善于挖掘个人美态的摄影团体,为用户提供状容造型、专业摄影、后期润饰…

html amp css自学网站,HTMLamp;CSS——网站注册页面,

HTML&CSS——网站注册页面,1、表单标签所有需要提交到服务器端的表单项必须使用括起来!form 标签属性: action,整个表单提交的位置(可以是一个页面,也可以是一个后台 java 代码)method,表单提交的方式(get/post/delete……等…

HTTrack - 克隆任意网站

HTTrack可以克隆指定网站-把整个网站下载到本地。 可以用在离线浏览上,也可以用来收集信息(甚至有网站使用隐藏的密码文件)。 一些仿真度极高的伪网站(为了骗取用户密码),也是使用类似工具做的。…

第13节 IIS之WEB服务器—用于发布网站

IIS之WEB网站发布服务器0 引言1 WEB服务器相关概念2 部署WEB服务器—以win2003为例2.1 安装WEB服务器软件2.2 发布静态网站2.3 发布动态网站3 一台服务器发布多个web网站—以win2003为例3.1 方法1:增加多个IP地址3.2 方法2:设置不同端口号3.3 方法3&…

iframe嵌入其他网站,如何自适应高度

终于有一周时间,工作不那么忙了,腾出手来总结下工作过程中学到的知识。 每天遇到新问题,解决新问题,但是却很少有时间去仔细研究下,或者总结下。攒的多了,就得从头捋一遍。 说下iframe自适应高度&#xff1…

【Linux系统】第13节 CentOS系统中采用Apache发布网站以及访问控制配置详解

目录1 CentOS系统中Apache的安装1.1 安装前检查1.2 配置IP地址1.3 安装及检查2 主页建立与编辑3 Apache主配置文件分析4 访问控制设定4.1 客户机地址限制4.1.1 客户机地址限制原理4.1.2 客户机地址限制示例14.1.3 客户机地址限制示例24.2 用户授权限制5 归纳参考文章1 CentOS系…

【(SQL+HTML+PHP)综合】一个简单论坛网站的综合开发案例(具有用户注册、登录、注销、修改信息、留言等功能)

目录1 实验环境2 网站页面功能规划2.1 论坛首页2.2 个人中心2.3 实现留言功能2.4 数据库及连接数据库3 实验阶段一:实现注册、登录、注销和更新头像等功能3.1 数据库3.2 论坛首页./index.php3.3 个人中心注册页面./member/register.php3.4 接收来自注册页面的表单数…

【蚁剑工具-01】网站管理工具之中国蚁剑安装过程详解以及应用实例

目录1 中国蚁剑安装及设置1.1 下载1.2 安装1.3 相关设置2 中国蚁剑应用实例2.1 操作环境2.2 具体步骤3 总结参考文章任何人不得将其用于非法用途以及盈利等目的,也禁止未经允许私自修改打包进行发布,否则后果自行承担并将追究其相关责任!中国…

【文件包含漏洞-04】经典面试题:已知某网站仅存在本地文件包含漏洞时,如何GetShell?

目录1 实验介绍2 实验环境3 实验步骤3.1 包含日志文件getshell拓展4 总结1 实验介绍 实验要求:假设攻击者已经知道某网站存在且仅存在本地文件包含漏洞,并且没有文件上传漏洞点及其他漏洞,如何GetShell。 实验目的:利用本地文件包…

php记录网站访问,PHP简单实现记录网站访问量功能示例

本文实例讲述了PHP简单实现记录网站访问量功能。分享给大家供大家参考,具体如下:tongji/index.php文件: $file dirname(__FILE__)./tongji.db; //$data unserialize(file_get_contents($file)); $fpfopen($file,r); $content; if (flock($f…

PHP毕业设计旅游网站,基于PHP旅游网站的开发与设计(含录像)

基于旅游网站的开发与设计(含录像)(程序代码,数据库,毕业论文25000字)随着Internet的普及,越来越多的企业建立了自己的WWW网站,电子商务应时而生。本论文主要讨论如何建立一个简单的旅游电子商务网站。本网站主要包括4大系统:注册模块&#x…

如何实现ASP.NET中网站访问量的统计

如何实现ASP.NET中网站访问量的统计 2009-07-30 15:50 佚名 网翼教程网 字号:T | T本文介绍了如何在asp.net中进行网站访问量的统计。 AD:51CTO 网 第十二期沙龙:大话数据之美_如何用数据驱动用户体验 下面介绍如何进行ASP.NET中网站访问量的…

css ico图标不显示,网站后台ico图标不显示的解决方法

文汇软件小编在进行霖可改版项目时,完成中文站后创建了英文站点,将英文站点的配置域名改为了英文站的域名,但是进入英文站后台时,网站的ico图标都不显示了,通过审查代码得知ico图标文件地址还是中文站的地址&#xff0…

asp IIS网站的配置(Win7下启用IIS7配置ASP运行环境)

其实win7下的IIS7配置过程是非常简单的。下面让seo博客来详细的介绍一下win7下配置IIS7环境运行ASP网站的方法,以供初接触者参考第一次在windows7下配置IIS,虽然有丰富的xp下配置IIS的经验,但还是会遇到不少的问题。特别是对入门者来说&#…

来了解并防范一下CSRF攻击提高网站安全

看一下我从网上找的原理图,结合举例描述,多看一遍你就知道怎么回事了。 CSRF是什么呢?CSRF全名是Cross-site request forgery,是一种对网站的恶意利用,CSRF比XSS更具危险性。想要深入理解CSRF的攻击特性我们有必要了解…

web程序设计asp.net实用网站开发源码_新网站开发要选择哪种数据库?这几种类型,你需要了解...

来自网易号,作者,云计算那点事在如今的互联网大背景下,网站开发成为了一个大热门,而网站开发离不开数据库的支持。对于开发人员来说,数据库日渐成为IT管理人员的得力助手。简单来讲,数据库(DataBase)就是一…

如何维护关键字_【品牌优化】网站品牌如何优化,效果怎样

点击上方蓝字关注我吧!建立网站品牌并非一夜之间就能形成的,它需要日积月累的口碑、服务、品质等一点点积累。而且网站品牌相当于一个行走在互联网上的符号,有了它可以让更多的消费者加深认识,对企业的发展起到至关重要的作用。那…

linux下lnmp域名绑定,lnmp安装ngnix配置多域名或多个网站

ngnix 配置默认情况下,ngnix下域名的绑定都是通过ngnix.conf文件来配置的,但是有时候我们有多个域名或子域名的情况下要怎么绑定呢?或者有子域名指定不同的目录的时候我们又应该怎么设置呢? 其实很简单,以下就以我的网…

tdk怎么设置_网站不收录应该怎么办,这几招是最好的解决

今年从3月份开始,做网站运营的站长朋友都发现,收录变慢了,然后逐渐不收录了。遇到问题后,我们要做的不是在这里怨天尤人,而是第一时间去发现问题,从而找到解决的办法。今天,冬镜就和大家一起来聊…

怎么注册tk域名_域名注册后怎么做网站?有了域名如何搭建网站?

域名注册后怎么做网站?有了域名如何搭建网站?很多人在聚名网注册域名后都不知道怎么使用,对于站长来说,域名注册后建站是第一要素,那么注册域名后如何建好网站呢?接下来聚名网小编就为大家介绍一下域名注册后怎么做网站和有了域名如何搭建…