javascript - 如何在WebMethod中接收非原始数据?

标签 javascript c# json web-services webmethod

我正在尝试通过 JavaScript 将字节数组传递给我的 WebMethod。 问题是我的 WebMethod 返回消息“测试表单仅适用于作为参数的原始方法。”

当我将数据类型更改为字符串或任何其他类型的原始变量时,WebMethod 会继续接受它。

我正在使用 MessagePack 将一个对象转换为 byte[],名为 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,它应该能够接收 byte[]

 [WebMethod]
public string TestMessagePack(byte[] name)
{        
    //my code

    return "Finish";
}

最佳答案

您可以使用 Base64 编码和解码将字节数组作为字符串发送。除此之外,您可能想使用 post 请求和 JSON 序列化/反序列化。不会有一个通用的单一尺寸适合复杂的 C# 对象和 javascript 对象之间的所有转换,这就是为什么只允许使用原始参数,因此对于非原始事物,您将需要一个转换层。这通常意味着某种形式的字符串序列化和反序列化。

关于javascript - 如何在WebMethod中接收非原始数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44726893/

相关文章:

javascript - 无法识别 Mozilla Firefox 中的右键单击事件

c# - 使用 ServiceStack.Text 序列化接口(interface)类型列表

c# - 获取列表中所有相邻元素的元组

php - 解析 JSON 数组 PHP - 字符串和 float

android - Genson 与 Android - Proguard 配置

javascript - Jquery Tmpl If 语句不起作用

javascript - 尝试在 Canvas 上创建随机像素时了解非随机输出

javascript - 使用什么技术来创建受页面折叠限制的 div?

c# - 具有数据绑定(bind) WPF 的默认按钮内容

c# - Strategy设计模式是否适合基于字符串比较的逻辑?