C#Web API – 内部服务器错误500

C#Web API – 内部服务器错误500,第1张

概述当我在WebAPI控制器中有一个返回类型’string’时,SuccessStatusCode在我的MVC控制器中返回’OK’,但是当返回类型是名为’USER’的模型时,我得到这个内部服务器错误.这是我的代码: 的WebAPI: public class UserController : ApiController{ OnlineCenterEntities db = new Onlin 当我在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所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1226951.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-05
下一篇2022-06-05

发表评论

登录后才能评论

评论列表(0条)

    保存