ASP.NET部署
在过去的几个月中,我一直在为我的大学编写一个Intranet网站,其中包含许多有关学生的报告。一切都很好,但是每周一次(ish)我必须去IT部门让他们登录IIS停止应用程序池,清除网站文件夹,清除临时asp.NET缓存,并用替换网站。新的一个。这不是一项艰巨的工作,但是我更愿意在需要时自己做。
我对ASP.NET的部署了解不多,IIS是否可以自己更新网站(如果可能的话,使系统保持活动状态)?上次查看此文件时,我认为我发现文件被锁定在网站目录中。
不同的发布选项有什么作用?
解决方案
我总是在定期维护期间(通常在工作时间以外)更新我的网站。因此,傍晚或者周末是短时间关闭服务并更新网站的最佳时间。安排维护时间,以便每个人都知道他们将是停机时间。
我们可以在IIS中为此网站激活Frontpage-Extensions。他们负责整个部署和更新。我们为每个网站激活了它们,以便于维护。
Visual Studio可以直接连接并部署到启用Frontpage-Extension的网站,因此应该没有问题。
实际上,我使用以下两种形式:
1)将VS表单发布到本地目录,然后(通过ftp)上传到服务器。我正在使用这种方式使用Filezilla ftp客户端,并且不传输web.config文件。
2)预编译网站(从ccnet),将其压缩,传输到服务器,在服务器(远程桌面)上连接并执行.bat文件,该文件将应用程序置于脱机模式(App_Offline.htm),进行备份并解压缩新版本。我们计划创建另一个网站来管理,避免手动连接并执行.bat。
我们可以使用Beyond Compare之类的程序连接到服务器的FTP(可以指向网站文件夹)并上传新文件。我们可以比较文件,逐行进行比较,并仅上传更改的文件。对我来说效果很好。
如果我们要执行此操作,则可以覆盖存在的文件。就个人而言,我有Cruise Control.NET可供我部署,我喜欢它。我有Subversion设置,因此每次提交svn都会自动更新我们的开发和登台系统。然后,对于实时站点,我标记所需的内容,并更改配置以从实时站点的新标记中提取并强制在其上进行构建。它真的很好,我们应该检查一下。它还会编译.cs文件,如果代码未生成,则不会部署。我相信Jeff将它与stackoverflow一起使用。
要在我们的IIS服务器上安装ASP.net应用程序(不需要Visual Studio),我们需要从版本控制中签出项目代码,然后在项目文件上运行msbuild.exe。我们可以在.Net framework文件夹中找到msbuild.exe,例如:
C:\ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \
我们要做的唯一一件事就是从其中一台开发机器复制目标定义,这些机器通常存储在:
C:\ Program Files \ MSBuild \
将.csproj / .vbproj文件保留在Web文件夹中是安全的,因为IIS无法提供它们,因为在该计算机上没有为它们定义的MIME类型,但是我们可以根据需要删除它们。
此设置也很容易编写脚本,这是一个好处。
为什么要停止应用程序池并清除临时文件?只要我们覆盖网站本身中的文件,它就可以正常工作。
我唯一要做的就是进入bin目录并清除所有随机命名的.dll文件。
Visual Studio也有它自己的部署选项,我们可以只提供一个UNC路径,它将删除旧文件并复制该网站的新版本。它甚至为我们抛出一个app_offline.html。