【问题标题】:Azure Mobile Apps Net Server run a method before Controller ActionAzure Mobile Apps Net Server 在控制器操作之前运行一个方法
【发布时间】:2017-01-15 00:21:50
【问题描述】:

我将 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(...);
 }

现在我的问题是我在多个 TableController 中有多个操作。我认为必须有一些非常简单的方法来调用 ValidateClientVersion() 在调用任何操作之前。我不想在每一个 Create、Update、Delete、... Action 中添加方法调用。

但是,因为我是 ASP.Net 的新手?或者 azure-mobile-apps-net-server 框架叫什么,我不知道这个简单的解决方案。

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

【问题讨论】:

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


【解决方案1】:

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

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

这类似于我们建议的离线同步架构更改。如果架构版本发生变化,请擦除离线同步 SQLite 并重新同步。

【讨论】:

  • 谢谢@adrian-hall,会考虑你的想法。您说“这类似于我们建议的离线同步...”。您是否有任何文档链接,我可以在其中阅读更多相关信息?
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-04
    • 1970-01-01
    • 2014-12-05
    • 2012-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多