C#Web API – 内部服务器错误500
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C#Web API – 内部服务器错误500,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2534字,纯文字阅读大概需要4分钟。
内容图文
当我在WebAPI控制器中有一个返回类型’string’时,SuccessStatusCode在我的MVC控制器中返回’OK’,但是当返回类型是名为’USER’的模型时,我得到这个内部服务器错误.这是我的代码:
的WebAPI:
public class UserController : ApiController
{
OnlineCenterEntities db = new OnlineCenterEntities();
public USER GetUserInfo(string userName, string domain)
{
USER userInfo = (from u in db.USERs
where u.USER_NAME.ToUpper() == userName.ToUpper() && u.LDAP_NAME.ToUpper() == domain.ToUpper()
select u).FirstOrDefault();
return userInfo;
}
}
调用WebAPI的MVC控制器:
public class HomeController : Controller
{
HttpClient client;
string url = "http://localhost:61566/api/user/";
public HomeController()
{
client = new HttpClient();
client.BaseAddress = new Uri(url);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
}
public async Task<ActionResult> Index(string userName, string domain)
{
string GetUserInfoURL = String.Format("GetUserInfo?userName={0}&domain={1}", userName, domain);
HttpResponseMessage responseMessage = await client.GetAsync(url+GetUserInfoURL);
if (responseMessage.IsSuccessStatusCode)
{
var responseData = responseMessage.Content.ReadAsStringAsync().Result;
var userInfor = JsonConvert.DeserializeObject<USER>(responseData);
}
return View();
}
USER型号:
public partial class USER
{
public int USER_ID { get; set; }
public string USER_NAME { get; set; }
public string FIRST_NAME { get; set; }
public string LAST_NAME { get; set; }
public string LDAP_NAME { get; set; }
public string EMAIL { get; set; }
}
在我的WebAPI中,如果我将返回类型从USER更改为字符串(当然,将返回变量类型更改为某个字符串(userInfo.FIRST_NAME)),我将SuccessStatusCode设置为“OK”,但是从此代码开始,我使用StatusCode获取内部服务器错误:500(无论这意味着什么).我已经尝试在每个可能的点插入断点,我知道api返回结果很好.我根本就不明白为什么以下这一行
HttpResponseMessage responseMessage = await client.GetAsync(url+GetUserInfoURL);
当我有返回类型USER时,给出InternalServerError错误,并返回整个USER模型而不是只返回一个字符串.
请不要担心我传递给控制器??的userName和domain参数,它们工作正常!
解决方法:
通常情况下,这意味着它无法序列化响应.一旦您的控制器返回USER实例,WebAPI必须将其序列化为客户端请求的格式.
在这种情况下,客户端请求“application / json”.默认的JsonMediaTypeFormatter使用JSON.Net将您的C#对象转换为客户端的json.显然序列化步骤失败了,但响应代码并没有告诉你究竟原因.
查看确切情况的最简单方法是使用自定义MessageHandler强制主体先缓冲,以便您可以看到实际的异常.以this blog post为例,强制它向您展示真正的失败.
内容总结
以上是互联网集市为您收集整理的C#Web API – 内部服务器错误500全部内容,希望文章能够帮你解决C#Web API – 内部服务器错误500所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。