我正在尝试在asp.NET MVC5应用程序中使用FineUploader。当我尝试使用FineUploader上传文件时,在我的Controller中,我是对策略文档进行Base64编码,对基本64位编码文档进行签名,然后根据文档将结果作为JSON对象返回。但是,在Controller返回JSON之后,我在页面上收到以下错误:
“响应不包括base64编码的策略!”
我的JSON有效负载的格式化一定有问题。这里是代码的相对部分:
byte[] byteArrayPolicy = System.Text.Encoding.UTF8.GetBytes(jsonStringFull);
string base64Policy = Convert.ToBase64String(byteArrayPolicy);
var signature = kha.ComputeHash(Encoding.UTF8.GetBytes(base64Policy));
var signatureString = ToHexString(signature, true);
string payloadString = @"{ ""policy"":""" + base64Policy + @"""," + @"""signature"":""" + signatureString + @"""}";
JsonResult jsonRequest = Json(payloadString);
return jsonRequest;
我要返回的JSON对象格式化有什么问题吗?该策略是我从FineUploader收到的策略的精确副本,只是它已经被Base64编码。签名是十六进制字符串。以下是有效负载的示例:
"{ \"policy\":\"eyJleH...=\",\"signature\":\"da186a017b038382e2cc21dfa4f1fbf806c51adf92984a9b95f1aa845aeb72e4\"}"
注意Base64政策中的“......”是为了简洁起见。
我得到的错误说响应不包含Base64编码策略,但在我看来它确实包含Base64编码策略。我的签名可能不正确吗?在将签名计算为字节数组后,它是否应该转换为十六进制字符串?
这是实际的paypload,根据Chrome:
"{ \"policy\":\"eyJleHBpcmF0aW9uIjoiMjAxNi0wNC0xNFQxNDo0MzozMS4zOTZaIiwiY29uZGl0aW9ucyI6W3siYWNsIjoicHJpdmF0ZSJ9LHsiYnVja2V0IjoiZnVuZHRoZWZ1bmVyYWwifSx7IkNvbnRlbnQtVHlwZSI6ImltYWdlL2pwZWcifSx7InN1Y2Nlc3NfYWN0aW9uX3N0YXR1cyI6IjIwMCJ9LHsieC1hbXotYWxnb3JpdGhtIjoiQVdTNC1ITUFDLVNIQTI1NiJ9LHsia2V5IjoiNGZkOGIzMDMtMmQ3Zi00MWJlLThiYWItYzUyMjBiNmRlMjQ1LmpwZyJ9LHsieC1hbXotY3JlZGVudGlhbCI6IkFLSUFKUkhDU09STExFUkpVMkVBLzIwMTYwNDE0L3VzLWVhc3QtMS9zMy9hd3M0X3JlcXVlc3QifSx7IngtYW16LWRhdGUiOiIyMDE2MDQxNFQxNDM4MzFaIn0seyJ4LWFtei1tZXRhLXFxZmlsZW5hbWUiOiIyMDE2LTAzLTI0LmpwZyJ9XX0=\",\"signature\":\"c592b3bca0dedba10301e06df37760cb527ac0a83112ae9b668dce00f0b23465\"}"
答案 0 :(得分:1)
错误似乎出现在您的代码中。正如您在答案中所说明的,响应有效负载是:
function changeColorOnHover(elementClass) {
var $element = $(elementClass);
$element
.on('mouseenter', function (event) {
// store a reference to this element
var $this = $(this);
$this.addClass('is-hover');
})
.on('mouseleave', function (event) {
// store a reference to this element
var $this = $(this);
$this.removeClass('is-hover');
});
}
但它应该是这样的:
"{...}"
通过{...}
运行您的响应后,结果是一个字符串而不是一个对象。