asp.net-mvc - ASP.NET Web Api - 将对象发布到自定义操作 Controller

标签 asp.net-mvc json web-services rest

我有下一个 ApiController

public class ValuesController : ApiController
{
    // GET /api/values
    public IEnumerable<string> Get()
    {
        return new string[] { "value1", "value2" };
    }

    public User CreateUser(User user)
    {
        user.Id = 1000;
        return user;
    }
}

有下一条路线
    routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "api/{controller}/{action}/{id}",
    defaults: new { id = RouteParameter.Optional });

我想使用这项服务。我可以使用第一种方法:
    var client = new WebClient();
    var result = client.DownloadString(@"http://localhost:61872/api/values/get");

但我不能使用第二种方法。当我下一步做:
    var user = new User() { Name = "user1", Password = "pass1" };
    var json = Newtonsoft.Json.JsonConvert.SerializeObject(user);
    result = client.UploadString(@"http://localhost:61872/api/values/createuser", json);

我在没有附加信息的情况下捕获下一个异常

The remote server returned an error: (500) Internal Server Error.



我有两个问题:
  • 将自定义对象设置为服务方法参数的正确方法是什么?
  • 我怎样才能获得关于这样的“魔法”异常的附加信息?
  • 最佳答案

    如果您打算发送 JSON 请求,请确保您已设置 Content-Type请求 header 适当,否则服务器不知道请求是如何编码的以及 user您的 Api Controller 操作采用的参数为空:

    using (var client = new WebClient())
    {
        client.Headers[HttpRequestHeader.ContentType] = "application/json";
        var user = new User() { Name = "user1", Password = "pass1" };
        var json = Newtonsoft.Json.JsonConvert.SerializeObject(user);
        var result = client.UploadString(@"http://localhost:61872/api/values/createuser", json);
    }
    

    关于asp.net-mvc - ASP.NET Web Api - 将对象发布到自定义操作 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10735944/

    相关文章:

    c# - asp下拉列表 bool 值总是设置为false?

    c# - WebClient UploadData 在发布带有扩展 ascii 字符的 json 数据时出现 400 Bad Request 错误

    jQuery UI 自动完成不过滤数据

    php - 循环遍历mysql json数据

    .net - 如何仅使用物理 wsdl 文件生成服务引用

    asp.net-mvc - Visual Studio 2010 Web 发布缺少文件

    asp.net-mvc - ASP.NET MVC View 模型最佳实践

    javascript - 有人设法让 ASPNET Core 与 Signal R 一起使用吗?

    c# - 如何使用字符串 JSON 响应压缩 ASMX 数据(C# Web 服务)

    java - Spring mvc 3中ModelAndView类的功能