Azure移动应用程序Net Server在控制器操作

时间:2017-01-12 17:04:28

标签: asp.net azure azure-mobile-services azure-web-app-service

我正在为我的智能手机应用程序后端使用azure-mobile-apps-net-server SDK。现在,当有新的更新可用时,我想向智能手机用户显示一些消息。我的想法是在请求的标题中包含智能手机应用程序的当前版本号,该标题将发送到后端。

现在我可以在后端读取版本,将其与某个值进行比较并抛出一个客户端将捕获的HttpResponseException。然后我可以向客户端用户显示一些消息以更新到更新的版本。

这里有一些伪代码:

public void ValidateClientVersion()
{
  var version = request.header["X-Client-Version"];
  if (version != 3.2.1)
    throw new HttpResponseException(...);
 }

现在我的问题我在多个TableControllers中有多个Actions。我认为必须有一些非常简单的方法来调用ValidateClientVersion() 在调用任何Actions之前。我不想在每个创建,更新,删除,...操作中添加方法调用。

然而,因为我是ASP.Net的新手?或者什么是azure-mobile-apps-net-server Framework被调用,我不知道这个简单的解决方案。

有人能指出我正确的方向吗?

2 个答案:

答案 0 :(得分:1)

在每个版本上执行此操作可能是一个坏主意。从用户体验的角度来看,更好的选择是在移动后端创建一个简单的WebAPI,它返回当前版本,可能带有下载链接(基于连接移动应用程序的操作系统)。

当您的移动应用连接时,它首先调用WebAPI。如果WebAPI具有不同的版本,则弹出消息和下载链接并退出。

这与我们建议的脱机同步架构更改类似。如果架构版本发生更改,请擦除脱机同步SQLite并重新同步。

答案 1 :(得分:0)

如果你真的想要这样做,你可以创建一个ApiController的子类,让我们称之为MyController并让你的控制器都从它派生。

然后覆盖MyController中的ExecuteAsync函数,将你的逻辑放在那里,并以return await base.ExecuteAsync(controllerContext,cancellationToken)结束函数;所以它继续在你的控制器中执行代码。