【发布时间】:2020-10-08 18:34:10
【问题描述】:
我正在开发 Asp.Net 核心应用程序,应用程序在我的本地运行良好,但我无法验证服务器上的防伪令牌。 错误:“Microsoft.AspNetCore.Antiforgery.AntiforgeryValidationException:无法解密防伪令牌。”
下面是代码。
@section scripts {
<script type="text/javascript">
$(document).ready(function() {
$("#btnstart").click(function(e) {
let productvals = $("#productlist").val();
let runnumber = $("#runnum").val();
let btnval = $("#btnstart").val();
e.preventDefault();
$.ajax({
url: "@Url.Action("
CheckRunnumber ","
Validation ")",
type: "POST",
dataType: "json",
data: {
runnumber: $('#runnum').val()
},
success: function(data) {
if (data.success == "True") {
console.log(data);
console.log(data.btnstartval);
//$("#Runform").submit();
if ($("#Runform").valid()) {
console.log(productvals, runnumber, data.btnstartval);
console.log(gettoken());
$.ajax({
url: "@Url.Action("
RunCase ", "
CallService ")",
type: "POST",
dataType: "json",
data: {
products: productvals,
runnumber: runnumber,
button: data.btnstartval,
__RequestVerificationToken: gettoken()
},
contentType: 'application/x-www-form-urlencoded; charset=utf-8'
});
} else {
alert("Error");
e.preventDefault();
}
}
}
});
function gettoken() {
var token = '@Html.AntiForgeryToken()';
token = $(token).val();
return token;
}
}
}
</script>
}
为了比较这个令牌,我在控制台窗口上记录了它,它与检查窗口内的应用程序选项卡下的不同。
下面是我得到的错误日志。
2020-10-08T13:00:05.5115395-05:00 0HM3BMFTTVJ22:00000001 [ERR] An exception was thrown while deserializing the token. (348bf365)
Microsoft.AspNetCore.Antiforgery.AntiforgeryValidationException: The antiforgery token could not be decrypted.
---> System.Security.Cryptography.CryptographicException: The key {dbeef040-4a73-45ff-8b62-064683015ea1} was not found in the key ring.
at Microsoft.AspNetCore.DataProtection.KeyManagement.KeyRingBasedDataProtector.UnprotectCore(Byte[] protectedData, Boolean allowOperationsOnRevokedKeys, UnprotectStatus& status)
at Microsoft.AspNetCore.DataProtection.KeyManagement.KeyRingBasedDataProtector.DangerousUnprotect(Byte[] protectedData, Boolean ignoreRevocationErrors, Boolean& requiresMigration, Boolean& wasRevoked)
at Microsoft.AspNetCore.DataProtection.KeyManagement.KeyRingBasedDataProtector.Unprotect(Byte[] protectedData)
at Microsoft.AspNetCore.Antiforgery.DefaultAntiforgeryTokenSerializer.Deserialize(String serializedToken)
--- End of inner exception stack trace ---
at Microsoft.AspNetCore.Antiforgery.DefaultAntiforgeryTokenSerializer.Deserialize(String serializedToken)
at Microsoft.AspNetCore.Antiforgery.DefaultAntiforgery.GetCookieTokenDoesNotThrow(HttpContext httpContext)
2020-10-08T13:00:35.9439222-05:00 0HM3BMFTTVJ22:00000004 [INF] Process not found (d326d86c)
【问题讨论】:
标签: javascript c# asp.net-core iis