将web应用程序+sql数据库+windows服务部署到Azure



我从未部署到azure,在尝试实现这一点时遇到了一些问题。我正在使用azure的免费服务。

我有一个mvc网络应用程序,这是我制作的自定义日历,是我的个人项目。该网络应用程序允许你在我创建的本地数据库中输入提醒和其他类型的事件。然后,我创建了一个windows服务,每分钟对数据库进行一次轮询,以检查当前时间是否有提醒或类似事件。如果有服务电子邮件,用户的提醒和其他详细信息。在本地,一切都很好,我想部署到网络上展示它。

对我来说,部署一直是个问题。我已经尝试将web应用程序部署为云服务和web应用程序+sql服务器。然后,我在更改网络应用程序中的连接字符串以匹配azures时遇到了问题。所以我试着打开应用程序,每页大约需要30秒才能加载。VS解决方案有多个项目,因为它是一个多层应用程序(项目:数据库、DAL、BL、UI、Common)。

然后,我尝试将我的版本控制代码添加到TFS中的azure项目中。我在源代码管理中保存了大约4个项目,但在azure中只找到1个。我已经研究了一遍又一遍,找不到任何东西。

我甚至还没有使用windows服务,因为我无法让应用程序/数据库协同工作。

TLDR;web应用程序将数据输入数据库。该服务根据每个用户的匹配日期查找输入的数据和电子邮件。我第一次使用azure进行部署,无法使web应用程序连接到azure中的数据库以正常工作,而且部署时应用程序速度非常慢。

主要问题是TFS没有在azure中显示所有项目,我是在解决方案中包括所有项目还是只包括UI,获取与azure匹配的连接字符串。总的来说我有点迷失了我想。。。我怎样才能让这一切正常工作?

当你说Web App时,我假设你指的是Azure应用服务(https://azure.microsoft.com/en-us/services/app-service/)。

通过导航到资源下的应用程序设置>连接字符串,可以在门户中为应用程序服务设置要使用的连接字符串。这里它应该是一个常规的连接字符串,您唯一需要做的就是确保服务器名称正确,并且您有一个用户和pwd集,可以访问数据库。如果您在门户中使用Wep-Abb(Web+SQL)创建资源,然后在那里输入数据库的用户和密码,那么您可以在连接字符串中使用。您可能希望在稍后阶段向SQL server添加一个专用用户,并将其专门用于此应用程序。

App Services有一个内置功能,可以让您从源代码管理自动部署代码。您可以将其设置为在提交到回购中的特定分支时构建MVC代码并将其部署到应用程序服务。导航到门户中应用程序服务下的部署选项。在这里,您将其设置为针对您的TFS回购。您的问题可能是,由于您的repo中有4个项目,如果所有4个都是web项目,那么构建脚本将不知道要构建和部署哪一个。如果你需要全部4个运行,那么你需要4个应用程序服务。您可以修改脚本,但这需要一些工作。https://github.com/projectkudu/kudu/wiki/Custom-Deployment-Script

另一个选项可能是使用Continuous Deploy功能设置Visual Studio Team Service为您工作(它在预览中,但运行良好)。

至于应该轮询数据库的持续运行的服务,我建议您看看Web作业来为您做这件事。https://learn.microsoft.com/en-us/azure/app-service-web/websites-dotnet-webjobs-sdk-get-started.web作业将在您运行网站的同一应用程序服务实例上运行。

最后,为了从Azure发送电子邮件,您需要使用电子邮件服务。SendGrid可以很好地与Azure应用服务配合使用,并且安装起来很容易。

最新更新