C# PostAsJsonAsync返回500个内部错误
我已经找了几个小时的解决方案,但我找不到问题的答案。 我想向一个web api发送一个post方法,我已经使用这些json内容在postman上首先尝试了它,它正在工作C# PostAsJsonAsync返回500个内部错误,c#,asp.net-mvc,asp.net-web-api,C#,Asp.net Mvc,Asp.net Web Api,我已经找了几个小时的解决方案,但我找不到问题的答案。 我想向一个web api发送一个post方法,我已经使用这些json内容在postman上首先尝试了它,它正在工作 { "ETickets": [ { "TicketName": "Weekend - Regular Day Pass", "TicketAccessType": "PA", "TicketGuest": "RDP", "IsWeekday": true
{
"ETickets": [
{
"TicketName": "Weekend - Regular Day Pass",
"TicketAccessType": "PA",
"TicketGuest": "RDP",
"IsWeekday": true
},
{
"TicketName": "Weekend - Regular Day Pass",
"TicketAccessType": "PA",
"TicketGuest": "RDP",
"IsWeekday": true
}
],
"TransactDetails": {
"CompanyCode": "ONLINE",
"Surname": "Dela Cruz",
"FirstName": "Juan",
"BookingReference": "1113",
"BookingDate": "2018-08-16T11:31:20:04"
}
}
然而,当我以编码方式尝试它时,我无法使它工作。调试时显示500个内部服务器错误。
以下是错误屏幕截图:
以下是与我的问题相关的几个代码:
TransactionDetailsViewModel finale = new TransactionDetailsViewModel();
finale.TransacDetails = transacDetail;
finale.ETickets = lsTickets.ToArray();
client = new HttpClient();
client.BaseAddress = new Uri(url);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", System.Web.HttpContext.Current.Session["WebApiAccessToken"].ToString());
HttpResponseMessage responseMessage = await client.PostAsJsonAsync(url + "api/Transaction/SendTransaction/", finale);
这是我用过的模型:
public class TransactionDetailsViewModel
{
public TransactionDetails TransacDetails { get; set; }
public TicketDetailsModel[] ETickets { get; set; }
}
public class TransactionDetails
{
public string CompanyCode { get; set; }
public string Surname { get; set; }
public string FirstName { get; set; }
public string BookingReference { get; set; }
public DateTime? BookingDate { get; set; }
}
public class TicketDetailsModel
{
public string TicketAccessType { get; set; }
public string TicketGuest { get; set; }
public string TicketName { get; set; }
public bool IsWeekday { get; set; }
}
我是否使用正确的格式发送数据,或者进行一些调整以使其能够发送到PostAsJsonAsync
任何帮助都将不胜感激。谢谢。请按如下方式修改您的代码
var data = new StringContent(JsonConvert.SerializeObject(finale, Encoding.UTF8, "application/json"));
HttpResponseMessage responseMessage = await client.PostAsJsonAsync("api/Transaction/SendTransaction/", data);
或者你可以提出请求,然后像
HttpResponseMessage response = null;
using (var client = new HttpClient())
{
using (var request = new HttpRequestMessage(HttpMethod.Post, url+"/api/Transaction/SendTransaction"))
{
request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", System.Web.HttpContext.Current.Session["WebApiAccessToken"].ToString());
var data = new StringContent(JsonConvert.SerializeObject(finale, Encoding.UTF8, "application/json"));
request.Content = data;
response = await client.SendAsync(request);
}
}
请按如下所示修改您的代码
var data = new StringContent(JsonConvert.SerializeObject(finale, Encoding.UTF8, "application/json"));
HttpResponseMessage responseMessage = await client.PostAsJsonAsync("api/Transaction/SendTransaction/", data);
或者你可以提出请求,然后像
HttpResponseMessage response = null;
using (var client = new HttpClient())
{
using (var request = new HttpRequestMessage(HttpMethod.Post, url+"/api/Transaction/SendTransaction"))
{
request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", System.Web.HttpContext.Current.Session["WebApiAccessToken"].ToString());
var data = new StringContent(JsonConvert.SerializeObject(finale, Encoding.UTF8, "application/json"));
request.Content = data;
response = await client.SendAsync(request);
}
}
请尝试在下面的行中发布数据
httpClient.PostAsync(url + "/api /Transaction/SendTransaction/", new StringContent(JsonConvert.SerializeObject(finale).ToString(), Encoding.UTF8, "application/json")).Result;
请尝试在下面的行中发布数据
httpClient.PostAsync(url + "/api /Transaction/SendTransaction/", new StringContent(JsonConvert.SerializeObject(finale).ToString(), Encoding.UTF8, "application/json")).Result;
你能从浏览器中查看网络标签上的500个内部错误详细信息吗请看我的错误截图,我已经编辑了我的帖子。Thanksimage链接已断开我认为图像链接正常,请尝试刷新您的页面,我在不同的计算机上尝试过,但未断开。已刷新,但我看不到图像seing图像行。但是,当我尝试使用编码样式时,我无法使其正常工作。调试时显示500个内部服务器错误。这是错误截图:在此处输入图像描述。请从浏览器中查看“网络”选项卡以获取500个内部错误详细信息。请查看我的错误截图,我已编辑了我的帖子。Thanksimage链接已断开我认为图像链接正常,请尝试刷新您的页面,我在不同的计算机上尝试过,但未断开。已刷新,但我看不到图像seing图像行。但是,当我尝试使用编码样式时,我无法使其正常工作。调试时显示500个内部服务器错误。下面是错误截图:在此处输入图像描述我尝试了这段代码,同样的问题也发生了。500内部服务器错误我可以建议另一个进程来发送请求吗?您已经使用了两次基本url。那么,它是如何工作的呢?我正在修改我的答案。请检查我删除了url的另一个实例,但错误仍然发生检查并重试我尝试了此代码,同样的问题也发生了。500内部服务器错误我可以建议另一个进程来发送请求吗?您已经使用了两次基本url。那么,它是如何工作的呢?我正在修改我的答案。请检查我已删除url的另一个实例,但错误仍在发生请立即检查并重试