Http Post Internal Server Error 500 in Web Api & WCF

本文关键字:Api amp WCF Web in Internal Post Server Error Http | 更新日期: 2023-09-27 17:57:56

我使用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; }
}

我在postaction和click事件附近使用了断点。但在附近的点击事件中var响应=客户端。PostAsJsonAsync("api/Event",event1)。结果;未返回到api post方法并返回响应状态代码并不表示成功:500(内部服务器错误)。更新的类似问题

-感谢Sindhu

Http Post Internal Server Error 500 in Web Api & WCF

您包含了两次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/Event"。并且将获得URI,api/Event/api/Event/。对于您的BaseAddress,您只需要主机名和端口。

例如

   client.BaseAddress = new Uri("http://localhost:40926");
   var response = client.PostAsJsonAsync("api/Event", event1).Result;

此外,您在服务器代码中从其他地方收到一个500内部服务器错误。我现在不知道在哪里。