如何在服务器上部署asp.net网站?

发布网友 发布时间:2022-04-23 08:32

我来回答

9个回答

懂视网 时间:2022-04-08 07:04

2.  给表添加新列

本小节,将修改Student和Instructor实体共同的基类Person类,添加一个birth date字段,也要在展示页面的表格上添加一个新列。

ContosoUniversity.DAL项目,打开Person.cs在类的末尾添加如下的代码属性(记得,大括号里面哦)。

[DisplayFormat(DataFormatString = "{0:d}", ApplyFormatInEditMode = true)]
[Required(ErrorMessage = "Birth date is required.")]
[Display(Name = "Birth Date")]
public DateTime? BirthDate { get; set; }

 

需要更新初始化类来支持新列,打开SchoolInitializer.cs文件找到var students = new List<Student>开头的代码,替换成包括birth date信息的如下的爱吗:

var students = new List<Student>
{
 new Student { FirstMidName = "Carson", LastName = "Alexander", EnrollmentDate = DateTime.Parse("2005-09-01"), BirthDate = DateTime.Parse("1990-01-01") },
 new Student { FirstMidName = "Meredith", LastName = "Alonso", EnrollmentDate = DateTime.Parse("2002-09-01"), BirthDate = DateTime.Parse("19-01-15") },
 new Student { FirstMidName = "Arturo", LastName = "Anand", EnrollmentDate = DateTime.Parse("2003-09-01"), BirthDate = DateTime.Parse("1988-02-01") },
 new Student { FirstMidName = "Gytis", LastName = "Barzdukas", EnrollmentDate = DateTime.Parse("2002-09-01"), BirthDate = DateTime.Parse("1987-03-15") },
 new Student { FirstMidName = "Yan", LastName = "Li", EnrollmentDate = DateTime.Parse("2002-09-01"), BirthDate = DateTime.Parse("1985-11-11") },
 new Student { FirstMidName = "Peggy", LastName = "Justice", EnrollmentDate = DateTime.Parse("2001-09-01"), BirthDate = DateTime.Parse("1970-11-21") },
 new Student { FirstMidName = "Laura", LastName = "Norman", EnrollmentDate = DateTime.Parse("2003-09-01"), BirthDate = DateTime.Parse("1992-10-11") },
 new Student { FirstMidName = "Nino", LastName = "Olivetto", EnrollmentDate = DateTime.Parse("2005-09-01"), BirthDate = DateTime.Parse("1986-06-06") }

};

 

var instructors = new List<Instructor>开头的代码块替换成如下代码:

var instructors = new List<Instructor>
{
 new Instructor { FirstMidName = "Kim", LastName = "Abercrombie", HireDate = DateTime.Parse("1995-03-11"), BirthDate = DateTime.Parse("1918-08-12") },
 new Instructor { FirstMidName = "Fadi", LastName = "Fakhouri", HireDate = DateTime.Parse("2002-07-06"), BirthDate = DateTime.Parse("1960-03-15") },
 new Instructor { FirstMidName = "Roger", LastName = "Harui", HireDate = DateTime.Parse("1998-07-01"), BirthDate = DateTime.Parse("1970-01-11") },
 new Instructor { FirstMidName = "Candace", LastName = "Kapoor", HireDate = DateTime.Parse("2001-01-15"), BirthDate = DateTime.Parse("1975-04-11") },
 new Instructor { FirstMidName = "Roger", LastName = "Zheng", HireDate = DateTime.Parse("2004-02-12"), BirthDate = DateTime.Parse("1957-10-12") }

};

 

在ContosoUniversity项目打开Instructors.aspx文件,添加一个模板字段来显示birth date,在hire date和office assignment字段之间:

<asp:TemplateField HeaderText="Birth Date" SortExpression="BirthDate">
 <ItemTemplate>
 <asp:Label ID="InstructorBirthDateLabel" runat="server" Text=‘<%# Eval("BirthDate", "{0:d}") %>‘></asp:Label>
 </ItemTemplate>
 <EditItemTemplate>
 <asp:TextBox ID="InstructorBirthDateTextBox" runat="server" Text=‘<%# Bind("BirthDate", "{0:d}") %>‘
  Width="7em"></asp:TextBox>
 </EditItemTemplate>
</asp:TemplateField>

(注:如果代码变形了,可以通过CTRL+K+D来格式化代码)

Students.aspx文件,在enrollment date 之前添加一个dynamic字段显示birth date:

<asp:DynamicField DataField="BirthDate" HeaderText="Birth Date" SortExpression="BirthDate"/>

 

StudentsAdd.aspx页面, enrollment date之前添加一个bound字段显示birth date:

<asp:BoundField DataField="BirthDate" HeaderText="Birth Date"
 SortExpression="BirthDate"/>

 

BLLSchoolBL.cs文件, 支持按列排序的GetStudents 方法力的switch语句里的default语句之前,添加一个case分支以支持使用birth date排序:

case "BirthDate":
 students = students.OrderBy(s => s.BirthDate);
 break;
case "BirthDate DESC":
 students = students.OrderByDescending(s => s.BirthDate);
 break;

 

运行程序访问Students页面,你可能感觉有一点慢,那是因为Entity Framework探测到了model变了,需要删除并重建数据库,然后将初始化里的数据插入到数据库。页面加载以后,可以看到有了一个birth date新列。

 

技术分享

访问Add Students和Instructors页面验证是否有这个新列。

 

技术分享

 

技术分享

3.  部署数据库更新到测试环境

在生产环境,部署升级的时候需要保持以前的数据,但是在测试环境则没有必要,不过为了使部署步骤和生产环境部署一样,我们还是在测试环境保存以前的数据,以便部署步骤尽量一样。对于生产环境,下面列出了一些需要follow的步骤:(忽略app_offline.htm步骤):

    从生产环境将School-Prod.sdf下载下来,放到Visual Studio项目的App_Data目录

    手工改变schema更新,手工更新数据

    重新上传School-Prod.sdf到生产环境

    部署项目

(除了手工上传的方式,也可以使用和项目一起部署的方式,但是需要在项目属性里设置部署的时候将这个数据库也一起部署了(membership数据库除外),手工方式的好处是不用修改任何设置,依然可以使用之前的one-click发布设置。)

 

应用Schema修改

部署到册数环境,你不必担心是否能获得最新的copy,可以更新项目里下载下来的School-Prod.sdf来用。

看看Entity Framework里为School数据库做的修改,你可以手工修改测试环境和生产环境数据库。在Solution Explorer里双击App_DataSchool.sdf在Server Explorer里打开数据库连接。

在Server Explorer里展开School-Dev.sdf,展开Tables-> Person->Columns。你可以看到Code First 生产的BirthDate列:

 

技术分享

在Properties窗口,你可以看到BirthDate列的数据类型是datetime, 名称和数据类型是唯一需要修改的。

 

技术分享

在Server Explorer里,右键School-Dev.sdf数据库然后选择关闭连接Close Connection。

(这只是数据库更新的简单例子,在真实环境里,数据库修改很麻烦的。本章的重点不是修改或跟踪数据库变化,而是数据库改变怎么影响数据库部署过程。普通的步骤就是:数据模型改变以后数据库需要怎么改变,以及Code First怎么自动更新数据库的,然后再用手工方式去做。)

下一步是手工修改School-Prod.sdf文件

在Server Explorer里,展开School-Prod.sdf->Tables->Person->Columns,然后你可以看到老的表结构(没有BirthDate列)。

右键Person选择Edit Table Schema显示Edit Table对话框。

 

技术分享

在Edit Table对话框,在Discriminator下面添加一个新列,输入如下信息:

    Column Name: BirthDate     Data Type: datetime           

 

技术分享

 

技术分享

Length, Allow Nulls, Unique和Primary Key的默认值都没问题。点击OK。

数据库和新代码能够很好的一起运行了,但是BirthDate 列在测试数据库(后面的生产环境数据库)的位置和在Entity Framework Code First 里的位置是不一样的,因为Visual Studio tool for SQL Server Compact 只支持在最下面添加新列。其实,说实话只是顺序不一样而已,没有什么大的问题。

在数据库方面,Visual Studio tool for SQL Server Compact 可能还会有其他的一些不能和Code First.的自动生产功能一样,你可以通过如下的方式来改进:

  • 使用WebMatrix的数据库操作功能,比Visual Studio 下的SQL Server Compact 的工具功能多。
  • 使用第三方或者开源工具,例如CodePlex 上的SQL Server Compact Toolbox 和 SQL Compact data and schema script utility。
  • 自己写DDL(数据定义语言)脚本来维护数据库结构。
  • 迁移至SQL Server Express或完整版SQL Server以后,可是使用SQL Server Management Studio,使用完整的数据库维护功能,也可以使用Visual Studio 2010 SQL Server database projects 或者 Database Publishing Wizard 来自动生产脚本(可能还有其它的原因迁移至SQL Server,请看第2章节里的叙述)。
  • 使用Entity Framework Code First Migrations,自动更新新的数据库以匹配新的数据模型。本章节撰写之前,该工具还没用Release,不过可是使用NuGet来安装预览器,请参看Entity Framework team blog。
  •  

    更新数据

    测试数据库的结果和新代码吻合了,但是你需要添加instructor 们的生日进去,你可以手工创建并执行一个SQL脚本。本章节已经帮你创建了这个脚本,你可以运行它。

    Server Explorer里, 右键School-Prod.sdf库的Person表,选择New Query。

     

    技术分享

    如果出现Add Table对话框的话,关闭它,然后将下面的SQL脚本复制到查询窗口的SQL窗格里:

    UPDATE Person SET BirthDate = ‘1918-08-12‘ WHERE PersonID = 9;
    UPDATE Person SET BirthDate = ‘1960-03-15‘ WHERE PersonID = 10;
    UPDATE Person SET BirthDate = ‘1970-01-11‘ WHERE PersonID = 11;
    UPDATE Person SET BirthDate = ‘1975-04-11‘ WHERE PersonID = 12;
    UPDATE Person SET BirthDate = ‘1957-10-12‘ WHERE PersonID = 13;

    技术分享

    右键SQL窗格,选择Execute SQL。

     

    技术分享

    如果出现Query Definitions Differ对话框,点击Continue继续。该消息只是告诉你查询代码不能直观里表示在SQL窗格上面UI及时显示界面上。

     

    技术分享

    查询运行了,然后弹出了5条数据被更新的确认窗口。

     

    技术分享

    Server Explorer里,重新右键Person选择Show Table Data检查instructors是否都有了生日数据。

     

    技术分享

    测试数据库现在可以部署了。

    复制数据库到测试站点

    在Windows Explorer资源管理器里,将ContosoUniversity项目的App_Data文件夹里的School-Prod.sdf文件复制到测试站点的App_Data目录(C:inetpubwwwrootcontosouniversityApp_Data),覆盖原来的数据库文件。

     

    和数据库更新一起部署更新代码

    可以部署更新的代码了, Solution Configurations下来菜单里选择Test, Publish profile 里也选择Test。点击Publish Web。(如果由于自定义了工具栏操作不了的话,参考:第8章节的内容)。

     

    技术分享

    Visual Studio部署了修改后的程序,并在Output窗口显示了成功信息。

     

    技术分享

    运行程序http://localhost/contosouniversity来验证更新是否成功部署,在Instructors 页面可以看到真实的birth date了。

     

    技术分享

    也可以运行Students页面 和Add Students页面来验证更新是否成功。

    4.  部署数据库更新到生产环境

    现在可以部署到生产环境了。除了需要先上传app_offline.htm文件防止用户使用站点以外,其它步骤和部署测试环境是一样的。生产环境部署的步骤如下:

  • 上传app_offline.htm文件到生产环境站点
  • 从生产环境站点下载School-Prod.sdf文件保存到本机的App_Data文件夹,然后再备份一份(见下面的注释)。
  • 手工添加新列
  • 运行更新脚本(具体更新数据视真实环境需要而定)
  • 上传School-Prod.sdf文件到生产环境站点
  • 使用Visual Studio发布
  • 注释:数据库备份的话题就不多说了,肯定是需要经常备份的,这里指的是School-Prod.sdf 和aspnet-Prod.sdf文件。

    最后一步和部署code-only 更新是一样的。在Solution Configurations下拉菜单里选择Release,在Publish profile下拉菜单里选择Production,然后点击Publish Web。

     

    技术分享

    Visual Studio部署了修改后的程序,并在Output窗口显示了成功信息。

     

    技术分享

    验证是否正确部署之前,需要先删除app_offline.htm文件,删除以后,就可以运行站点来验证部署是否正常了。

     

    技术分享

    现在,你已经成功将包含数据库更新的应用程序部署到测试环境和生产环境了。下一章节讲的是如何将SQL Server Compact数据库迁移到SQL Server Express 或者完整版SQL Server上。

    版权声明:本文为博主http://www.zuiniusn.com原创文章,未经博主允许不得转载。

    微软ASP.NET站点部署指南(9):部署数据库更新

    标签:数据库   asp.net   

    热心网友 时间:2022-04-08 04:12

    对于许多新手来说,如何在服务器上部署网站并不了解,这个教程希望对新手有帮助。

    1、IIS服务器

    2、.Net Framework3.5 (方便起见,我们这里Framework说的都是指的这个版本)

    这两个软件都需要我们自己手动操作安装到服务器里面。那到底是先装哪一个呢,为了方便起见,一般我们都先安装IIS服务器,然后再安装Framework。

    当然偶也遇到过几次部署人员先安装了Framework再安装IIS服务器的,这样的操作步骤就会导致Framework不会被注册进IIS服务器里面。就是说在网站属性的ASP.NET选项卡上面不会出现下面这样的版本选择框

    那我们怎么处理这样的情况呢,很简单,手动到IIS里面注册一下:

    开始-->运行-->cmd-->输入 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -i

    再说一下我们公司用的系统WindowsService2003sp2,怎么看这个信息呢?

    右键我的电脑-->属性 就可以看到了

    接下来,我们就可以开始安装了。

    首先,是安装IIS

    开始-->控制面板-->添加或删除程序-->打开 添加/删除windows组件 窗口 这个打开的过程可能比较慢,系统要先自动检测一下到底装了啥东西

    然后一直下一步就可以完成IIS的安装了。

    安装Framework没有什么好说的,双击安装文件一直下一步就可以了。

    等两个软件都安装完成后,就可以通过

    右击我的电脑-->管理    打开计算机管理窗口

    可以看到里面有一项应用程序服务器的选项,不错,就是刚才安装的那个东西。

    点开它,会看到一个 Internet 信息服务(IIS)管理器,就是要在这个东西里面操作,其他的不用去管。

    打开,会发现有三个子菜单:

    1、应用程序池

    2、网站

    3、Web服务扩展

    什么是应用程序池?太专业了,不去管他,为了保险起见,偶每建立一个网站都要创建一个应用程序池来管理,至于这个池的配置,一切默认啦,微软都已经帮做好了。

    来创建一个应用程序池:

    右键应用程序池-->

    然后展开这个应用程序池的菜单,就可以看到刚才新建的Test的应用程序池了。

    接下来左键单击 Web服务扩展 菜单 打开.net2.0的扩展

    接下来就可以新建一个网站了,右键 网站

    直接单击下一步

    输入网站的名字 Test ,下一步

    选择端口,如果需要绑定IP和主机头,需要在这里绑定,没有需要,就不做了(打个比方,网站的访问路径是http://192.168.1.150:2000,这里的2000就是需要的端口号)

    接下来要选定网站的物理路径,就是这个网站的文件到底放在了电脑的那个地方,C盘?D盘?还是哪,反正就是网站所在的文件夹的路径

    选定文件夹后再点击下一步

    接下来要配合网站的访问权限,由于网站需要些文件操作的功能,所以一般都把写入权限加上

    单击下一步后,网站就算是创建成功了.

    热心网友 时间:2022-04-08 05:30

    最简单的方法::
    1. 你先用VS 打开你的网站,确保在开发环境中可以正常运行你的网站
    2. 点击开发环境菜单栏“生成”--“发布网站”---然后选择IIS 服务器,默认的目录一般是: c盘有个wwwroot 的文件夹 ,然后点击确定即可,可能会弹出,目标文件已经存在,是否覆盖等的字样,选择先确定 即可。
    网站即可成功运行!!

    热心网友 时间:2022-04-08 07:05

    先把网站用vs发布
    然后打开iis
    做个网站或虚拟目录
    把主目录改成网站文件夹
    把iis的asp.net版本设好
    权限之类的都设下
    基本上就可以用了

    热心网友 时间:2022-04-08 08:56

    先把数据库附加上

    然后把你的项目放在一个文件夹下。。。
    配置IIS 将文件目录指向到你的项目文件夹,,,然后配置IIS使用2.0 配置Web.config中的数据库连接字符串就可以了

    热心网友 时间:2022-04-08 11:04

    这个你完全不用担心,你直接把你网站的所有数据上传到ftp空间,直接联系他们客户,帮你解决,就ok了

    热心网友 时间:2022-04-08 13:29

    要是你的数据库和网页放在一起的话,直接上传就可以了,要是数据库和网页不在同一台服务器上就要配置web.config文件. q5595_1517

    热心网友 时间:2022-04-08 16:10

    安装一下netframe2.0,然后在IIS里对 asp.net进行配置一下就可以了。

    热心网友 时间:2022-04-08 19:08

    在iis上部署网站,新建一个虚拟目录,把里面的相关选项设置好就可以.

    声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com