您的位置:首页 > 编程语言 > ASP

ASP.NET Web项目发布选项:“允许更新此预编译站点” 详解

2019-08-07 17:32 1611 查看

目录

  • #当本地的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.geek-share.com/detail/2558697141.html

    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: