C# 部署web应用程序+;sql数据库+;Azure的windows服务

C# 部署web应用程序+;sql数据库+;Azure的windows服务,c#,azure,azure-web-app-service,C#,Azure,Azure Web App Service,我从未部署到azure,我在尝试让它工作时遇到了一些问题。我使用azure的免费服务 我有一个mvc网络应用程序,它是我制作的自定义日历,是我的个人项目。这个web应用程序允许你将提醒和其他类型的事件输入到我创建的本地数据库中。然后我创建了一个windows服务,每分钟轮询一次数据库,检查当前时间是否有提醒或类似事件。如果用户收到服务电子邮件,请发送提醒和其他详细信息。在本地,一切都运行得很好,我想部署到web上展示一下 对我来说,部署一直是个问题。 我已经尝试将web应用部署为云服务和web应

我从未部署到azure,我在尝试让它工作时遇到了一些问题。我使用azure的免费服务

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

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

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

我甚至还没有使用windows服务,因为我无法让应用程序/db一起工作

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


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

当你说Web App时,我想你是指Azure App Service()

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

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

另一个选项可能是设置VisualStudioTeamService以使用连续部署功能为您工作(它在预览中,但工作正常)

至于应该轮询数据库的持续运行的服务,我建议您查看Web作业来为您做到这一点。web作业将在运行站点的同一应用程序服务实例上运行


最后,为了从Azure发送电子邮件,您需要使用电子邮件服务。是一款与Azure应用程序服务配合使用且安装简单的应用程序。

谢谢,这是一个好东西。那么我的EF连接字符串呢?您的EF连接字符串的结构应该与gow相同。您可以将其设置为on-prem数据库,只要确保您更改了服务器、用户和密码,就可以了。要在App Services中使用ConnectionString,请查看此项。App Services的配置中有一项功能,允许您在web.config中使用ConnectionString,并在部署时替换为门户中设置的值。这允许您在web.config中有一个用于开发的连接字符串,在门户中有另一个(您没有将其放入repo中)。