繁体   English   中英

Web Api和WCF中的HTTP发布内部服务器错误500

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM