![](/img/trans.png)
[英]Angularjs and ASP.NET Web Api cause 500 Internal Server Error on $http.post
[英]Http Post Internal Server Error 500 in Web Api & WCF
我使用WPF作为客户端,使用Web api作为服务。 对于添加新事件,请单击WPF中的按钮和更新按钮,而不返回到api控制器中的http post操作,并且还返回错误内部服务器错误。 Http Post方法
[HttpPost]
public HttpResponseMessage PostEvent(EventFormModel event1)
{
if (ModelState.IsValid)
{
var command = new CreateOrUpdateEventCommand(event1.EventId, event1.EventAgenda, event1.Description, event1.EventDate, event1.Location, event1.UserId);
var result = commandBus.Submit(command);
if (result.Success)
{
var response = Request.CreateResponse(HttpStatusCode.Created, event1);
string uri = Url.Link("DefaultApi", new { id = event1.EventId });
response.Headers.Location = new Uri(uri);
return response;
}
}
else
{
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
throw new HttpResponseException(HttpStatusCode.BadRequest);
}
WPF点击事件:
private async void btnNewEvent_Click(object sender, RoutedEventArgs e)
{
var event1 = new Event()
{
EventAgenda = txtAgenda.Text,
Description = txtEventDescription.Text,
Location=txtLocation.Text,
UserId=Convert.ToInt32(txtUserId.Text),
EventId=Convert.ToInt32(txtEventId.Text),
EventDate=Convert.ToDateTime(dateEventDate.Text),
};
client.BaseAddress = new Uri("http://localhost:40926/api/Event");
// Add an Accept header for JSON format.
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
var response = client.PostAsJsonAsync("api/Event", event1).Result;
if (response.IsSuccessStatusCode)
{
MessageBox.Show("added" + response);
txtAgenda.Text = "";
txtEventDescription.Text = "";
txtLocation.Text = "";
txtUserId.Text = "";
txtEventId.Text = "";
dateEventDate.Text = "";
}
else
{
MessageBox.Show("Error Code" + response.StatusCode + " : Message - " + response.ReasonPhrase);
}
WPF应用程序中的事件类:
public class Event
{
public int EventId { get; set; }
public int UserId { get; set; }
// [Required(ErrorMessage = "Agenda Required")]
//[Display(Name = "Movie Name")]
public string EventAgenda { get; set; }
// [Required(ErrorMessage = "Location Required")]
public string Location { get; set; }
// [Required(ErrorMessage = "Date Required")]
public DateTime EventDate { get; set; }
public string Description { get; set; }
// public string ReminderType { get; set; }
}
我在后期操作和单击事件附近使用了断点。 但在var响应= client.PostAsJsonAsync(“ api / Event”,event1).Result附近的点击事件中; 不重试api post方法并返回“响应”状态代码并不表示成功:500(内部服务器错误)。 更新也有类似问题
-感谢信德
您两次包含了URI的某些部分。
client.BaseAddress = new Uri("http://localhost:40926/api/Event");
// Add an Accept header for JSON format.
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
var response = client.PostAsJsonAsync("api/Event", event1).Result;
您复制了“ api /事件”。 并获得URI,api / Event / api / Event /。 对于您的BaseAddress,您只需要主机名和端口。
例如
client.BaseAddress = new Uri("http://localhost:40926");
var response = client.PostAsJsonAsync("api/Event", event1).Result;
另外,您在服务器代码中的其他位置也收到500 Internal Server错误。 我现在不能在哪里。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.