将Protobuf消息发送到Web API失败

时间:2016-04-22 20:27:01

标签: c# http asp.net-web-api2 protocol-buffers protobuf-net

我正在使用Microsoft Web API 2和Protobuf-net来序列化我的数据。一切都运行得很好,除非我想将二进制数据发送到Web API控制器。我最终得到500错误。

目前是否可以或仅限于序列化?为了验证我的响应是否正确,我使用了ProtobufJS并对其进行了正确解码。为了查明我的问题,我将其排除在外,并在收到后直接发送了我的回复。任何帮助设置将不胜感激。

Web API控制器

public class UserController : ApiController
{
    // GET api/<controller>
    public User Get()
    {
        var user = new User{ Id = "ABC1", FirstName = "John", LastName = "Doe" };
        return user;
    }

    // GET api/user/
    public void Post(User user)
    {
        var type = "POST";
    }
}

模型

[ProtoContract]
public class User
{

    [ProtoMember(1)]
    public string Id { get; set; }

    [ProtoMember(2)]
    public string FirstName { get; set; }

    [ProtoMember(3)]
    public string LastName { get; set; }
}  

的Javascript

<script>

    var get = new XMLHttpRequest();
    get.open("GET", "api/user", true);
    get.responseType = "arraybuffer";
    get.setRequestHeader("Accept", "application/x-protobuf");

    get.onload = function (event) {

        var arrayBuffer = get.response;

        var post = new XMLHttpRequest();
        post.open("POST", "api/user", true);
        post.setRequestHeader("Accept", "application/x-protobuf");
        post.overrideMimeType("application/x-protobuf");

        post.send(arrayBuffer);

    }

    get.send(null);

</script>

0 个答案:

没有答案