我有下一个 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/