Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript .Net core AntiForgeryToken与服务器不匹配_Javascript_C#_Asp.net Core_Iis - Fatal编程技术网

Javascript .Net core AntiForgeryToken与服务器不匹配

Javascript .Net core AntiForgeryToken与服务器不匹配,javascript,c#,asp.net-core,iis,Javascript,C#,Asp.net Core,Iis,我正在使用Asp.Net核心应用程序,该应用程序在我的本地计算机上运行良好,但我无法在服务器上验证Antiforgery令牌。 错误:“Microsoft.AspNetCore.Antiforgery.AntiforgeryValidationException:无法解密Antiforgery令牌。” 下面是代码 @节脚本{ $(文档).ready(函数(){ $(“#btnstart”)。单击(函数(e){ 设productvals=$(“#productlist”).val(); 设runn

我正在使用Asp.Net核心应用程序,该应用程序在我的本地计算机上运行良好,但我无法在服务器上验证Antiforgery令牌。 错误:“Microsoft.AspNetCore.Antiforgery.AntiforgeryValidationException:无法解密Antiforgery令牌。”

下面是代码

@节脚本{
$(文档).ready(函数(){
$(“#btnstart”)。单击(函数(e){
设productvals=$(“#productlist”).val();
设runnumber=$(“#runnum”).val();
设btnval=$(“#btnstart”).val();
e、 预防默认值();
$.ajax({
url:@url.Action(“
CheckRunnumber“
验证“,
类型:“POST”,
数据类型:“json”,
数据:{
runnumber:$('#runnum').val()
},
成功:功能(数据){
如果(data.success==“True”){
控制台日志(数据);
console.log(data.btnstartval);
//$(“#运行形式”).submit();
if($(“#运行形式”).valid(){
log(productvals、runnumber、data.btnstartval);
log(gettoken());
$.ajax({
url:@url.Action(“
RunCase“
电话服务“,
类型:“POST”,
数据类型:“json”,
数据:{
产品:productvals,,
runnumber:runnumber,
按钮:data.btnstartval,
__RequestVerificationToken:gettoken()
},
contentType:'application/x-www-form-urlencoded;charset=utf-8'
});
}否则{
警报(“错误”);
e、 预防默认值();
}
}
}
});
函数gettoken(){
var-token='@Html.AntiForgeryToken()';
令牌=$(令牌).val();
返回令牌;
}
}
}
}
为了比较这个令牌,我将它记录在控制台窗口中,它与inspect窗口中Application选项卡下的不同

下面是我得到的错误日志

2020-10-08T13:00:05.5115395-05:00 0HM3BMFTTVJ22:0000000 1[ERR]反序列化令牌时引发异常。(348bf365)
Microsoft.AspNetCore.Antiforgery.AntiforgeryValidationException:无法解密Antiforgery令牌。
--->System.Security.Cryptography.CryptographyException:在密钥环中找不到密钥{dbeef040-4a73-45ff-8b62-064683015ea1}。
位于Microsoft.AspNetCore.DataProtection.KeyManagement.KeyRingBasedDataProtector.UnprotectCore(字节[]protectedData,布尔allowOperationsOnRevokedKeys,UnprotectStatus&status)
位于Microsoft.AspNetCore.DataProtection.KeyManagement.KeyRingBasedDataProtector.DangerousUnprotect(字节[]protectedData,布尔值ignoreRevocationErrors,布尔值&requiresmigation,布尔值&wasrecaded)
位于Microsoft.AspNetCore.DataProtection.KeyManagement.KeyRingBasedDataProtector.Unprotect(字节[]protectedData)
在Microsoft.AspNetCore.Antiforgery.DefaultAntiforgeryTokenSerializer.Deserialize(String serializedToken)
---内部异常堆栈跟踪的结束---
在Microsoft.AspNetCore.Antiforgery.DefaultAntiforgeryTokenSerializer.Deserialize(String serializedToken)
在Microsoft.AspNetCore.Antiforgery.DefaultAntiforgery.GetCookieTokenDoesNotThrow(HttpContext HttpContext)上

2020-10-08T13:00:35.9439222-05:00 0HM3BMFTTVJ22:0000000 4[INF]进程未找到(d326d86c)
您的应用程序是否在共享服务器后端托管?您的应用程序似乎没有足够的权限读取密钥

我建议您可以尝试修改IIS应用程序池标识,以便有足够的权限读取密钥。有关详细信息,您可以参考以下步骤:

1.打开IIS管理控制台:

2.选择您的应用程序池

3.将应用程序池标识修改为具有足够权限访问您的密钥的本地系统或其他域帐户

如果这无法解决您的问题,请共享startup.cs设置好吗