无法从 C# 调用 HTTP POST 方法 - 内部服务器错误
Cannot invoke HTTP POST method from C# - Internal Server Error
我创建了一个 Web api 项目并实现了以下 HTTP POST 方法。
[HttpPost, ActionName("updateProfile")]
public IHttpActionResult updateProfile([FromBody]RequestDataModel request)
{
// MY CODE
}
public class RequestDataModel
{
public string FullName { get; set; }
public int Age { get; set; }
}
这是我的 WebAPIConfig class。
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
并且我尝试从我的 C# 应用程序调用此方法。
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var account = new { FullName = "Test", Age = 25 };
StringContent content = new StringContent(JsonConvert.SerializeObject(account), Encoding.UTF8, "application/json");
// HTTP POST
var response = client.PostAsync("http://localhost:63648/api/Account/updateProfile", content);
if (response.Result.IsSuccessStatusCode)
{
// MY CODE
}
}
但它 returns 是一个错误 "Internal Server Error"。
WebApiConfig 的 routeTemplate 中存在问题 class。
routeTemplate 应该是 api/{controller}/{action}/{id}
而不是 api/{controller}/{id}
见下文。
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
我创建了一个 Web api 项目并实现了以下 HTTP POST 方法。
[HttpPost, ActionName("updateProfile")]
public IHttpActionResult updateProfile([FromBody]RequestDataModel request)
{
// MY CODE
}
public class RequestDataModel
{
public string FullName { get; set; }
public int Age { get; set; }
}
这是我的 WebAPIConfig class。
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
并且我尝试从我的 C# 应用程序调用此方法。
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var account = new { FullName = "Test", Age = 25 };
StringContent content = new StringContent(JsonConvert.SerializeObject(account), Encoding.UTF8, "application/json");
// HTTP POST
var response = client.PostAsync("http://localhost:63648/api/Account/updateProfile", content);
if (response.Result.IsSuccessStatusCode)
{
// MY CODE
}
}
但它 returns 是一个错误 "Internal Server Error"。
WebApiConfig 的 routeTemplate 中存在问题 class。
routeTemplate 应该是 api/{controller}/{action}/{id}
而不是 api/{controller}/{id}
见下文。
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);