decimal類型有GetBits()方法
可以獲取到值的int[4]值,進而獲取到byte[16]值
在c#里,0m和0.00m獲取到的byte[]是不一樣的(具體為何不一樣,自己百度)
在sql里,EF生成的decimal的列,默認強制2位小數
c#里賦值0m,存到數據庫變成0.00m
那么問題來了
如果有用到decimal.GetBits()的值作為要簽名的內容
那么存到數據庫后再取出來,驗證簽名就會失敗
為了應對這種問題,需要在存進數據庫前,強制把decimal轉為2位小數
在賦值語句里連著“+0.01m-0.01m”,例如item.Credit = value + 0.01m - 0.01m;
這樣就能解決這個問題了……
新聞熱點
疑難解答