System.Web.Security.MachineKey.Protect & Unprotect 問題

有朋友詢問它透過 System.Web.Security.MachineKey.Protect 再將 Byte Array 轉成 Base64 字串後,

在同一台電腦上,透過 Console 程式去解,卻發生 System.Security.Cryptography.CryptographicException 的錯誤。

發生 System.Security.Cryptography.CryptographicException
  HResult=0x80131430
  Message=進行密碼編譯作業期間發生錯誤。
  Source=System.Web
  StackTrace: 
   於 System.Web.Security.Cryptography.HomogenizingCryptoServiceWrapper.HomogenizeErrors ...

...繼續閱讀 »

新、舊系統在一起的交易之路 ~ 取得 Spring.NET 的 Connection 及 Transaction

我們有舊的元件(Workflow),連接DB是透過自行封裝 Ado.NET 的元件,
而到新開發的系統,則是使用 Spring.NET + NHibernate 。
當新、舊交雜在一起使用時,交易該如何控管呢?
最簡單的就是用 TransactionScope 去包起來,
但這時候 MSDTC 就跑起來了。
但是很多單位現在都不給開 MSDTC 了,
那要怎麼辦呢? 取得 DB Connection 及 Transaction 往內傳嗎?
要如何取得 Spring.NET 中的 System.Data.Common.DbTransaction 物件呢? 

...繼續閱讀 »

Concurrent Requests for Writeable Session Variables

在之前有討論到不同網頁使用到 Writeable Session 時會卡來卡去的狀況 Lock or Blocking(使用Session要小心網頁會被 卡住 哦!),

或是 Web Service 如果開啟 Session 存取的話,預設是 Writeable Session 模式(設定 WebService 使用 ReadOnly Session)。

解法除了設定 SessionStateBehavior.ReadOnly 外,

When a Single ASP.NET Client makes Concurrent Requests for Writeable Session Variables 這篇還提供2個方式,

1.降低 Session Lock Check 的時間

2.實作 Lockless SessionStateStoreProvider

維護舊系統的朋友,如果改了 ReadOnly 又怕會影響到什麼功能,可以參考看看哦!

...繼續閱讀 »