0

我正在爲我的智能手機應用程序後端使用azure-mobile-apps-net-server SDK。現在,當有新的更新可用時,我想向智能手機用戶顯示一些消息。我的想法是將智能手機應用程序的當前版本號包含在請求的標題中,該標題將轉到後端。Azure移動應用程序網絡服務器在控制器操作之前運行方法

現在我可以讀取後端的版本,將它與某個值進行比較並拋出一個HttpResponseException,客戶端將捕獲該HttpResponseException。然後,我可以向客戶端用戶顯示一些消息以更新爲新版本。

這裏是一些僞代碼:

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

現在我的問題我已經在多個TableControllers多個動作。我認爲在任何操作被調用之前,必須有一些非常簡單的方法來調用ValidateClientVersion() 。我不想在每個創建,更新,刪除...操作中添加方法調用。

但是,因爲我是新的ASP.Net?或者調用azure-mobile-apps-net-server框架,我不知道這個簡單的解決方案。

有人能指出我正確的方向嗎?

+0

如果您使用的是asp.net mvc,那麼您需要的是「Action filters」https://www.asp.net/mvc/overview/older-versions-1/controllers-and-routing/understanding- action-filters-cs – Mitul

回答

1

在每個單獨的版本上執行此操作可能是一個糟糕的主意。從用戶體驗角度來看,更好的選擇是在您的移動後端創建一個簡單的WebAPI,返回當前版本,可能會有一個下載鏈接(基於連接的移動應用程序的操作系統)。

當您的移動應用程序連接時,它首先調用WebAPI。如果WebAPI具有不同的版本,則彈出消息和下載鏈接並退出。

這與我們建議的離線同步模式更改類似。如果模式版本更改,請擦除脫機同步SQLite並重新同步。

+0

謝謝@adrian-hall,會考慮你的想法。您說「這與我們建議的脫機同步...類似」。你有沒有鏈接到文檔,在那裏我可以閱讀更多關於這個? – user2415476

+0

它在ZUMO書中 - http://aka.ms/zumobook –

0

如果你真的想這樣做,你可以創建一個ApiController的子類,讓我們稱之爲MyController,並讓你的控制器都從它派生。

然後重寫MyController中的ExecuteAsync函數,把你的邏輯放在那裏,並用返回值結束函數base.ExecuteAsync(controllerContext,cancellationToken);所以它繼續執行你的控制器中的代碼。

相關問題