Буфер не может быть нулевым.Имя параметра: буфер - PullRequest
2 голосов
/ 17 ноября 2011

Я написал код для отправки электронного письма со ссылкой на 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`

Это съедает мой день. Любое предложение будет очень полезно.

Получил подсказку об ошибке .. Я считаю, что проблема с закодированным значением в QueryString

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

По некоторым причинам декодер Base64 возвращает 'null'.

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

Есть идеи, почему он возвращает ноль? Разве это не правильный код Base64?

1 Ответ

2 голосов
/ 17 ноября 2011

Это означает, что метод Auth.IdentityTokenXChangeData.Deserialize создает новый экземпляр MemoryStream с нулевым аргументом buffer.

Этот метод кажется специфичным для вашего кода / среды (на вашем сайте есть Auth.IdentityModule).), поэтому вам нужно взглянуть на это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...