发布的asp.net mvc网站

时间:2018-02-23 03:34:12

标签: c# sql asp.net-mvc azure entity-framework-6

我有一个在Azure上发布的网站(作为App Service),它是使用ASP.NET MVC,SQL,EF6技术堆栈开发的。

我在项目中有一个类,它不断地为新消息ping服务总线队列。

如果服务总线队列中有新消息,它应该获取消息并登录数据库。

问题是,当我发布到Azure时,该类无法正常工作,并且始终无法阅读消息。

有更好的解决方案吗?

2 个答案:

答案 0 :(得分:1)

如果你的计时器没有开机,除非有人在点击网络服务器,你需要另一种方法来触发计时器并进行服务总线检查。

您已经在使用Azure,因此您应该查看Azure Functions。它有timer trigger选项,可以每5分钟或任何应用程序需要运行您的消息检查。

答案 1 :(得分:1)

对于您的方案,您可以创建后台任务以侦听来自服务总线队列的消息,然后检索消息并将其保存到数据库中。例如,您可以在_maunalResetEvent文件:

下定义Global.asax.cs
private static ManualResetEvent _maunalResetEvent = new ManualResetEvent(false);

并在Application_Start的{​​{1}}事件下添加以下代码。

Global.asax.cs

此外,您可以在Joe Wilson回答时使用Azure Functions,并使用Azure Service Bus bindings for Azure Functions进行基于事件的消息处理,而不是创建计时器或调度程序来手动检索队列消息。此外,您可以利用WebJobs来实现您的方案,您可以遵循How to use Azure Service Bus with the WebJobs SDK的详细信息。

此外,对于Azure App服务的托管,您的应用程序将在几分钟(默认情况下为20分钟)不活动后闲置。因此,您需要启用始终开启选项。 注意:您可以启用始终开启,以便始终在基本或更高版本的应用服务计划中加载您的应用。您可以关注的详细信息here