将 Web 应用程序从 Visual Studio 迁移并发布到 Azure 云服务
注意
本文适用于 Azure 云服务(经典),它已于 2024 年 8 月 31 日停用。 通过 Azure 云服务(扩展支持),仍支持使用这项技术构建的现有服务。 对于新开发,我们建议使用专为特定目的设计的较新服务类型,例如 Azure 应用服务、Azure Functions 或 Azure 容器应用。 有关可用服务的最新列表,请参阅 Azure 产品的目录。
要利用 Azure 的托管服务和缩放功能,可能需要将 Web 应用程序迁移和部署到 Azure 云服务。 只需要很小的更改。 本文仅介绍了如何部署到云服务;对于应用服务,请参阅在 Azure 应用服务中部署 Web 应用。
重要
只有特定的 ASP.NET、WCF 和 WCF 工作流项目才支持此迁移。 而 ASP.NET Core 项目不支持。 请参阅支持的项目模板。
先决条件
- 一个 Azure 帐户。 如果没有 Azure 帐户,请激活你的 Visual Studio 订阅者 Azure 权益或注册免费试用版。
将项目迁移到云服务
右键单击解决方案节点,选择“添加”>“新建项目...”,然后将新的“Azure 云服务(经典)”添加到现有解决方案。
在“新建 Microsoft Azure 云服务(经典)”对话框中,单击“确定”而不向项目添加任何角色。
右键单击新添加的云服务项目下的“角色”节点,然后选择“在解决方案中添加 Web 角色项目...”。
在“与角色项目关联”对话框中,选择要作为 Web 角色关联的项目。
重要
如果有此 Web 应用程序所需的其他程序集或文件,必须手动设置这些文件的属性。 有关如何设置这些属性的信息,请参阅在服务包中包含文件。
错误和警告
发生的任何警告或错误都会指示在部署到 Azure 之前要解决的问题,例如缺少程序集。
如果生成应用程序,使用计算仿真程序本地运行,或将其发布到 Azure,你可能会看到错误:“指定的路径和/或文件名过长。”此错误表示完全限定的 Azure 项目名称的长度超过了 146 个字符。 要解决该问题,请将你的解决方案移到路径较短的其他文件夹中。
有关如何将任何警告视为错误的详细信息,请参阅使用 Visual Studio 配置 Azure 云服务项目。
在本地测试迁移
- 在 Visual Studio 的“解决方案资源管理器”中,右键单击添加的云服务项目,然后选择“设为启动项目”。
- 选择“调试”>“启动调试”(F5) 以启动 Azure 调试环境。 该环境专门提供了各种 Azure 服务的仿真。
为应用程序使用 Azure SQL 数据库
如果你的 Web 应用程序具有使用本地 SQL Server 数据库的连接字符串,则必须将数据库迁移到 Azure SQL 数据库,然后更新连接字符串。 有关此过程的指导,请参阅以下主题:
将应用程序发布到 Azure 云服务
如准备从 Visual Studio 发布或部署 Azure 应用程序中所述,在 Azure 订阅中创建必需的云服务和存储帐户。
在 Visual Studio 中,右键单击应用程序项目,然后选择发布到 Microsoft Azure...(与“发布...”命令不同)。
在出现的“发布 Azure 应用程序”中,使用你的 Azure 订阅帐户登录,然后选择“下一步 >”。
在设置 > 通用设置选项卡中,从云服务下拉列表中选择目标云服务以及选择的环境和配置。
在“设置”>“高级设置”中,选择要使用的存储帐户,然后选择“下一步 >”。
在“诊断”中,选择是否将信息发送至 Application Insights。
选择“下一步 >”以查看摘要,然后选择“发布”以开始部署。
Visual Studio 将打开一个活动日志窗口,你可以在其中跟踪进度:
(可选)要取消部署过程,请右键单击活动日志中的行项目,然后选择“取消并删除”。 此命令会停止部署过程,并从 Azure 中删除部署环境。 注意:要在部署后删除这个部署环境,必须使用 Azure门户。
要在部署后访问你的应用程序,当 Azure 活动日志中显示“已完成”状态以及 URL 时,请选择部署旁边的箭头。 有关如何从 Azure 启动特定类型的 Web 应用程序的详细信息,请参阅下表。
在 Azure 中使用计算模拟器并启动应用程序
通过选择“调试”>“启动调试”(F5),可以在连接到 Visual Studio 调试程序的浏览器中启动所有应用程序类型。 通过 ASP.NET 的空白 Web 应用程序项目,必须先在应用程序中添加一个 .aspx
页面,并将其设置为 Web 项目的起始页。
下表提供了有关在 Azure 中启动应用程序的详细信息:
Web 应用程序类型 | 在 Azure 中运行 |
---|---|
ASP.NET Web 应用程序 (包括模型视图控制器 (MVC) 2、MVC 3、MVC 4) |
选择 Azure 活动日志的“部署”选项卡中的 URL。 |
ASP.NET 空 Web 应用程序 | 如果你的应用程序中有默认的 .aspx 页面,请选择 Azure 活动日志的“部署”选项卡中的 URL。 要导航到其他页面,请在浏览器中输入以下窗体的 URL:<deployment_url>/<page_name>.aspx |
WCF 服务应用程序 WCF 工作流服务应用程序 |
将 .svc 文件设置为 WCF 服务项目的起始页。 然后导航到 <deployment_url>/<service_file>.svc 。 |
ASP.NET 动态实体 ASP.NET 动态数据 LINQ to SQL |
如下一部分所述更新连接字符串。 然后导航到 <deployment_url>/<page_name>.aspx 。 对于 LINQ to SQL,必须使用 Azure SQL 数据库。 |
为 ASP.NET 动态实体更新连接字符串
如前面 (#use-an-azuresql-database-for-your-application) 中所述,为 ASP.NET 动态实体 Web 应用程序创建 SQL Azure 数据库。
从 Azure 门户添加需要用于此数据库的表和字段。
使用以下格式在
web.config
文件中指定连接字符串并保存该文件:<add name="tempdbEntities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string="data source=<server name>\SQLEXPRESS;initial catalog=<database name>;integrated security=True;multipleactiveresultsets=True;App=EntityFramework"" providerName="System.Data.EntityClient"/>
使用 Azure SQL 数据库的 ADO.NET 连接字符串更新 connectionString 值,如下所示:
<add name="tempdbEntities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string="Server=tcp:<SQL Azure server name>.database.windows.net,1433;Database=<database name>;User ID=<user name>;Password=<password>;Trusted_Connection=False;Encrypt=True;multipleactiveresultsets=True;App=EntityFramework"" providerName="System.Data.EntityClient"/>
支持的项目模板
可以迁移并发布到云服务的应用程序必须使用下表中的一个模板。 不支持 ASP.NET Core。
模板组 | 项目模板 |
---|---|
Web | ASP.NET Web 应用程序 (.NET Framework) |
Web | ASP.NET MVC 2 Web 应用程序 |
Web | ASP.NET MVC 3 Web 应用程序 |
Web | ASP.NET MVC 4 Web 应用程序 |
Web | ASP.NET 空白 Web 应用程序(或站点) |
Web | ASP.NET MVC 2 空 Web 应用程序 |
Web | ASP.NET 动态数据实体 Web 应用程序 |
Web | ASP.NET 动态数据 LINQ to SQL Web 应用程序 |
WCF | WCF 服务应用程序 |
WCF | WCF 工作流服务应用程序 |
工作流 | WCF 工作流服务应用程序 |