2015-03-31 58 views
0

我在Web API中對控制器有兩個不同的調用。假設第一個路線爲http://localhost/1,第二個路線爲在ASP.NET Web API中使用事務

我的目標是做類似交易的事情。在第一次調用中,我想將數據發送到服務器。所以這就是我的第一個問題出現的地方:如何在服務器上短時間保存數據,而不是將其保存到數據庫中?最佳做法是什麼?

在第二次通話中我發送驗證碼。如果代碼是好的,那麼我會對之前調用的客戶端發送的數據做些什麼。

這聽起來像是一個交易給我。如果代碼正常,則提交,如果代碼驗證失敗,則回滾事務,但我不確定是否有可能在這種情況下使用事務,當您有兩種不同的POST方法時。

有人可以幫我考慮一下這點嗎?

+0

看來你必須將驗證碼與數據結合起來。通常webapi是一個無狀態的實現,所以在調用之間沒有共享。 – Peter 2015-03-31 07:03:07

+1

@peer在內存中保存某種事務引用是否是好主意,將其返回給客戶端,然後在第二次調用中請求客戶端提供事務引用和驗證代碼?這是在我腦海中滑落... – 2015-03-31 07:09:32

回答

2

不要在服務器上暫存任何東西。這是一個不好的做法。

WebApi是無狀態的。所以,最好保存服務器中的每個細節。

  1. 在第一個POST調用,返回一個獨特的交易參考號(使用SQL服務器來保存這些信息)

    例如POST到http://localhost/requestVerificationNumber/它返回一個GUID

  2. 在第二POST調用,交叉通過與之前存儲的唯一的交易號匹配它檢查驗證代碼。第二次POST調用是發送該參考號碼的責任。

    E.g. POST到http://localhost/verifyCode/以及GUID之前發送。 這種方法的優點是所有的事務都存儲在Sql Server中,並在以後進行操作。

+1

@nowhewhomustnotber感謝您的回答,它給了我更好的想法如何實現這一點。 :) – 2015-03-31 07:48:40

+0

@ nemo_87:酷。很高興幫助:) – 2015-03-31 08:53:28