我试图通过JavaScript将一个字节数组传递给我的WebMethod。 问题是我的WebMethod返回消息"测试表单只适用于原始方法作为参数。"
当我将数据类型更改为字符串或任何其他类型的原始变量时,WebMethod接受它继续。
我正在将一个对象转换为一个byte [],使用MessagePack命名为msgpackEnvio(转换本身很好),然后发送到WebService。
这是我使用jquery
对WebService的请求$.ajax({
beforeSend: function (request) {
request.setRequestHeader("Content-Type", "application/json");
},
processData: false,
dataType: "json",
url: url,
data: msgpackEnvio,
type: "POST",
error: function (data) {
$('#upload-load').hide();
$('.bt-enviar-excel').removeAttr('disabled', 'disabled');
var msg = document.getElementsByClassName('msg')[0];
msg.style.color = 'red';
msg.innerHTML = 'Erro interno servidor!';
},
success: //some code
事实上,上面的代码根本不重要,我的问题在于webService,以及如何使它接收数组或对象。
这是我的WebMethod应该能够接收一个字节[]
[WebMethod]
public string TestMessagePack(byte[] name)
{
//my code
return "Finish";
}
答案 0 :(得分:0)
您可以使用base64编码和解码将字节数组作为字符串发送。除此之外的任何东西,你可能想要使用post请求和JSON序列化/反序列化。复杂的C#对象和javascript对象之间的所有转换都不是通用的,这就是为什么只允许原始参数的原因,因此对于非原始事物,您需要一个转换层。这通常意味着某种形式的字符串序列化和反序列化。