ASP.NET Web项目发布选项:“允许更新此预编译站点” 详解
目录
#使用visual studio 发布web项目
我们使用visual studio 可以通过如下的方法发布web网站:

在打开的对话框中,有一个选项至关重要,那就是:“允许更新此预编译站点”
“允许更新此预编译站点”这一项,是可选的,那么,选中与不选中,有何区别呢?
#"允许更新此预编译站点" 选项的意义
我们在发布 .Net web项目时,一般情况下,项目中所有的.CS文件,会自动生成DLL动态链接库,这就能够很好的保护网站的源代码,因为服务端代码一般都是放在.CS文件里面的,既然都生成了DLL文件,那么,上传到服务器,别人就不能轻易打开来看了!
但是,其它的文件,诸如ashx、aspx等文件,里面原来有什么,就是什么,别人可以打开这些文件来查看,尽管别人看不见CS代码,但是仍然能够看见ASPX文件里面的HTML代码或部分服务器控件及相关的属性;ashx这样的文件,就相当于一个cs文件,里面的代码也是能够轻易看见的;
因此,.CS文件安全了,但是ASPX、ashx等文件,就不安全了;
那么,到底有没有一种办法,让上传到服务器的web文件,都安全呢?方法是有的,就是发布的时候,不选中 “允许更新此预编译站点”;
1、选中 “允许更新此预编译站点”
如果发布web的时候,选中“允许更新此预编译站点”,那么,结果是这样的:
整个网站文件,除了所有的CS文件编译成为DLL文件之外,其它的文件,和原来的没有任何变化,里面是什么,还是什么,只要别人通过记事本一打开,里面的代码、HTML代码等,都可以让别人一览无余。
除此之外,通过此种方式发布的网站,当用户第一次访问某个页面的时候,需要经过编译,查找BUG,之后,如果没有任何错误,才能正常访问,因此,速度会变得比较慢。之后的访问就正常了;
2、不选中 “允许更新此预编译站点”
如果在发布web的时候,不选中“允许更新此预编译站点”,那么,结果是这样的:
1、网站里面的所有CS文件,都被编译成为DLL文件;
2、除了cs文件,其它的文件,诸如ASPX、ASHX等文件,也一同被编译起来,每个文件都在BIN目录里面生成一个对应的*.compiled文件;
之后,如果您通过记事本查看ASPX、ASHX等文件,里面不会看到任何的代码,就连HTML代码标记都看不见,打开这样的文件,里面只有一行文字,内容为“这是预编译工具生成的标记文件,不应被删除!”,且这些文件的大小都为1kb;



这样的结果看着有点诡异,但是,web的访问却是正常的,不会出现任何不良的问题。
所以呢,使用这种方式发布web,ashx、aspx等文件都不能通过记事本打开,里面显示的都是一行文字,因此,网站文件就非常安全了。
此外,通过此种方法发布的网站,所有内容都编译好了,打开的速度是很快的。
3、Asp.Net MVC 的web项目也有同样的结果


#当本地的web文件发生修改的时候,需要更新哪些文件到服务器;
1、如果发布方式,选中了“允许更新此预编译站点”;
- 如果修改的是aspx或cshtml等网页文件,那只需更新发布后的aspx文件到服务器;
- 如果修改的是aspx.cs文件,那需要将bin下的对应的dll更新到服务器;
如果修改的是ashx文件,那只需要将ashx文件更新到服务器;
2、如果发布方式,没选中“允许更新此预编译站点”;
- 如果修改的是aspx或cshtml等网页文件,那需要将对应的DLL文件及.compiled文件都更新到服务器,而aspx文件不需要更新到服务器;
- 如果修改的是aspx.cs文件,那需要将bin下的对应的dll更新到服务器;
如果修改的是ashx文件,那需要将对应的DLL文件及.compiled文件都更新到服务器,而ashx文件不需要更新到服务器;
#参考
https://www.cnblogs.com/LifeKingcn/archive/2012/09/15/2686579.html
ASP.NET Web项目发布选项:“允许更新此预编译站点” 详解的更多相关文章
- ASP.NET网站发布-允许更新此预编译站点 打勾与不打勾的区别
发布网站时在打开的对话框中,有一个选项是至关重要的,那就是“允许更新此预编译站点”: “允许更新此预编译站点”这一项,默认情况下,前面是打上一个√的,至于要不要打上一个√,是可选的,那么,打勾与不打勾 ...
- net网站发布-允许更新此预编译站点 及修改发布后内容
我们可以通过如下的方法发布VS2010的网站: “生成”→“发布网站”:弹出对话框! 在打开的对话框中,有一个选项是至关重要的,那就是“允许更新此预编译站点”: “允许更新此预编译站点”这一项,默认情 ...
- 在 Visual Studio 2013 中创建 ASP.NET Web 项目(0):专题导航 [持续更新中]
写在前面的话 随着 Visual Studio 2013 的正式推出,ASP.NET 和 Visual Studio Web 开发工具 也发布了各自的最新版本. 新版本在构建 One ASP.NET ...
- VS2015 ASP.NET5 Web项目
VS2015 ASP.NET5 Web项目结构浅析 前言 本文个人同步博客地址http://aehyok.com/Blog/Detail/76.html 在安装好VS2015之后,一直想看看新版本 ...
- 在 Visual Studio 2013 中创建 ASP.NET Web 项目(1):概述 - 创建 Web 应用程序项目
注:本文是“在 Visual Studio 2013 中创建 ASP.NET Web 项目”专题的一部分,详情参见 专题导航 . 预备知识 本专题适用于 Visual Studio 2013 及以上版 ...
- Java Web项目发布及使用自定义域名
详细讲解的网址: http://wenku.baidu.com/link?url=-ACZxKUcfrbhrMRUP3Ov-Q_c-Q9JPrA9D1fzHjHuJsWwZfRsVDVQ2qBtoY7 ...
- ASP.NET MVC 5 学习教程:Edit方法和Edit视图详解
原文 ASP.NET MVC 5 学习教程:Edit方法和Edit视图详解 起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图和布局页 控制器传递数据给视图 添加模型 ...
- 【译】ASP.NET MVC 5 教程 - 7:Edit方法和Edit视图详解
原文:[译]ASP.NET MVC 5 教程 - 7:Edit方法和Edit视图详解 在本节中,我们继续研究生成的Edit方法和视图.但在研究之前,我们先将 release date 弄得好看一点.打 ...
- web缓存服务器varnish-4.1.6的部署及配置详解
web缓存服务器varnish-4.1.6的部署及配置详解 1.安装varnish4.1.6安装依赖 yum install -y autoconf automake jemalloc-devel l ...
随机推荐
- mount -- 挂载理解
1.挂载? 在windows操作系统中, 挂载通常是指给磁盘分区(包括被虚拟出来的磁盘分区)分配一个盘符. 第三方软件,如磁盘分区管理软件.虚拟磁盘软件等,通常也附带挂载功能. 在linux操作系统中 ...
- 使用 Mybatis 框架 jdbc 方式批量写入 SQL Server,报错 com.microsoft.sqlserver.jdbc.SQLServerException 传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确。此 RPC 请求中提供了过多的参数,最多应为2100
这个错是sqlserver抛出来的. 进过验证,上述错误中的2100为插入的总字段数. 比如下面这种插入方式,values后面的一个括号里的字段为30个,那么后面最多只能加70条,即这种批量插入方式一 ...
- redux和react-redux做简单组件控制
这次我们用两种方式实现以下要求 1.三个组件 2.第一个组件有两个按钮 分别控制第二和第三个组件年龄和姓名的改变 3第二个组件展示姓名,第三个组件展示年龄 用到哪些插件 store redux 一 ...
- 使用ajax的几种方式
1.$.ajax()发送一个get请求,数据返回为json $.ajax({ type: "GET", url: "select", //ajax请求地址 da ...
- Java学习笔记之---构造方法
Java学习笔记之---构造方法 (一)构造方法的特性 构造方法不能被对象单独调用 构造方法与类同名且没有返回值 构造方法只能在对象实例化的时候被调用 当没有指定构造方法时,系统会自动添加无参的构造方 ...
- .Net Core Api 授权认证
一.所使用到的NuGet: 1. System.IdentityModel.Tokens.Jwt 2. Microsoft.AspNetCore.Authentication.JwtBearer 二. ...
- 聊聊Java String.intern 背后你不知道的知识
Java的 String类有个有意思的public方法: public String intern() 返回标准表示的字符串对象.String类维护私有字符串池. 调用此方法时,如果字符串池已经包含等 ...
- Java编程思想:进程控制
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public ...
- [记录]python的简单协程框架(回调+时间循环+select)
# -*- coding: utf-8 -*- # @Time : 2018/12/15 18:55 # @File : coroutine.py #一个简单的 Coroutine 框架 import ...
- nginx连接资源管理
本文介绍在nginx中连接资源(即ngx_connection_t)的管理与使用. 连接池的初始化 在ngx_cycle_t结构体中维护了几个和连接相关的数据,具体如下 struct ngx_cycl ...