2011-11-17 203 views
2

我已經編寫了代碼發送帶有指向URL的鏈接的電子郵件,用戶必須點擊該鏈接進行確認。緩衝區不能爲空。參數名稱:緩衝區

示例鏈接: http://localhost:3531/VerificationModule/VerifyEmail.aspx?TemplateID=519457608&F960866879F669E=Tw5NpFeW9HsAqc_Ap5dmOwqkZ041pFQGYLxRV-puumtHsfhrTYtDe51uCbGV44Kc1X3n6cggsynfqRmh74ie535ymkvATeK5Jii11tOMIZDZ_GVB8QolLeMU5i6KWEZculKhM0IOhYFaMc-DsB

但是,當用戶點擊鏈接時,在瀏覽器中打開得到,但顯示以下錯誤。

「緩衝區不能爲空參數名:緩衝區」

請找到堆棧跟蹤如下:

[ArgumentNullException: Buffer cannot be null. 
Parameter name: buffer] 
System.IO.MemoryStream..ctor(Byte[] buffer, Boolean writable) +9629927 
System.IO.MemoryStream..ctor(Byte[] buffer) +6 
Auth.IdentityTokenXChangeData.Deserialize(String base64Package) +187 
Auth.IdentityTokenXChange.TrySniffIdentityToken(HttpRequest req, String& sessionId, String& sessionTag, String& returnUrl) +244 
Auth.IdentityModule.OnBeginRequest(Object sender, EventArgs e) +365 
System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +220 
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +120` 

這是吃了我的一天。任何建議都會有很大的幫助。

上了錯誤的線索.. 我相信問題是與編碼值的查詢字符串

("F960866879F669E=Tw5NpFeW9HsAqc_Ap5dmOwqkZ041pFQGYLxRV-puumtHsfhrTYtDe51uCbGV44Kc1X3n6cggsynfqRmh74ie535ymkvATeK5Jii11tOMIZDZ_GVB8QolLe‌​MU5i6KWEZculKhM0IOhYFaMc-DsB") - 

的Base64編碼解碼正在返回「空」因爲某些原因。

Method - 
'System.Web.HttpServerUtility.UrlTokenDecode 
("F960866879F669E=Tw5NpFeW9HsAqc_Ap5dmOwqkZ041pFQGYLxRV-puumtHsfhrTYtDe51uCbGV44Kc1X3n6cggsynfqRmh74ie535ymkvATeK5Jii11tOMIZDZ_GVB8QolLe‌​MU5i6KWEZculKhM0IOhYFaMc-DsB")' 

任何想法爲什麼它返回null?它不是一個有效的Base64編碼?

+0

有沒有想過你的問題? –

回答

2

這意味着Auth.IdentityTokenXChangeData.Deserialize方法會創建一個新的MemoryStream實例,其中null參數爲空。

此方法似乎特定於您的代碼/環境(您的站點中有一個Auth.IdentityModule),因此您需要查看它。

+0

感謝您的回覆。我認爲這個問題是在查詢字符串(「F960866879F669E = Tw5NpFeW9HsAqc_Ap5dmOwqkZ041pFQGYLxRV-puumtHsfhrTYtDe51uCbGV44Kc1X3n6cggsynfqRmh74ie535ymkvATeK5Jii11tOMIZDZ_GVB8QolLeMU5i6KWEZculKhM0IOhYFaMc-DSB」)編碼的價值 - Base64編碼解碼正在恢復由於某些原因「空」。 (方法System.Web.HttpServerUtility.UrlTokenDecode(base64Package)) – Dinny