如何解决API调用代码可在localhost上运行,但不能在服务器上运行
本地代码可以正常工作,但是在上载到服务器时显示500 [内部服务器错误] 我已经尝试过使用单个参数,但是不能在实际环境中工作
- 参数在JSON.stringify(itemlist) 中
这是我的ajax代码:
var itemlist = new Array();
var item = {
Fnumber: Fnumber,Snumber: Snumber,Flag: Flag,Page: _pageName,bulkupdate: false,sortText: $("#hdnsorting").val(),excel: false,filtCompany: $("#hdnfilterCompanies").val(),ShowDDLvalue: ddlValue,url: "localhost"
}
itemlist.push(item);
$.ajax({
url: '/CompanyContact/GetContacts',data: JSON.stringify(itemlist),dataType: "json",type: "POST",cache: false,contentType: "application/json; charset=utf-8",success: function (data) {}
});
这是我的控制器方法,该方法具有用于参数列表的FilterParameters模型:
[HttpPost]
public JsonResult GetContacts(List<FilterParameters> item)
{
var List = _api.PostRequest<List<FilterParameters>,Contacts>(_baseAPIurl + "contacts",item,Convert.ToString(Session["AccessToken"]));
return Json(List.Result,JsonRequestBehavior.AllowGet);
}
这是我的API调用:
public async Task<List<TOut>> PostRequest<TIn,TOut>(string uri,TIn content,string token)
{
List<TOut> DataList = new List<TOut>();
try
{
using (var client2 = new HttpClient())
{
// token authorization
client2.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer",token);
client2.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var serialized = new StringContent(JsonConvert.SerializeObject(content),Encoding.UTF8,"application/json");
var postTask = client2.PostAsJsonAsync<TIn>(uri,content);
postTask.Wait();
var result = postTask.Result;
if (result.IsSuccessStatusCode)
{
var readTask = result.Content.ReadAsAsync<TOut[]>();
readTask.Wait();
var Data = readTask.Result;
DataList = Data.ToList();
return DataList;
}
else
{
return DataList = null;
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
return null;
}
}
也尝试发送FilterParameters模型对象的所有参数,但失败。 预先感谢。
解决方法
当模型中包含不可为空的元素,并且帖子中缺少特定元素时,您会遇到错误代码500。因此,请确保您提及“ FilterParameters”对象中的所有元素。同样,在您的情况下,我认为不需要STRINGIFY json数组。直接发送json数组。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。