Web API:远程服务器返回错误。 (500内部服务器错误。仅限在线而非本地计算机

时间:2015-05-19 05:52:34

标签: c# asp.net serialization asp.net-web-api

这是问题所在。我正在使用ASP.NET Web API与我的项目集成,我将请求URL存储在web.config中。在我的代码中,我使用这些URL来触发对Web API的请求并发送和接收数据。网址工作正常,我可以向你保证。这里的问题是这个单一的URL。

当我在本地计算机上运行两个项目并且数据流正确时,它正在工作。但是当我在托管后测试在线运行它时,同样的服务无法向我发送数据。相反,我在catch块中收到以下异常:

  

远程服务器返回错误:(500)内部服务器错误。

我已经确认以下内容是真实和正确的:

  1. 两个项目中的连接字符串。
  2. 没有拼写错误。
  3. 没有错误的网址。
  4. 在本地调试时,它没有显示错误并成功继续。
  5. 完全致力于本地和接收正确的数据,但不能在线工作。
  6. 我也尝试过重新托管。但仍然是一样的。不知道这里可能出现什么问题。

    这是控制器方法代码:

    using (var client = new WebClient())
    {
       Model serviceModel = new Model();
       serviceModel.Number = Num;
       serviceModel.type = "getalldetails";
       client.Headers[HttpRequestHeader.ContentType] = "application/json";
       JavaScriptSerializer serializer = new JavaScriptSerializer();
       var result = client.UploadData(System.Web.Configuration.WebConfigurationManager.AppSettings["GetDetails"], Encoding.UTF8.GetBytes(serializer.Serialize(serviceModel)));//this is the exception point
    }
    

    这是web.config网址:

    <add key="GetDetails" value="http://hostname/api/controller/GetDetails" />
    

    此外,我在Web API端设置了错误日志,包含错误请求或类似内容,但在这种情况下不会插入新记录。所以这让我感到困惑,以至于问题出在哪里。

    这就是例外情况:

      

    发现System.Net.WebException HResult = -2146233079 Message = The   远程服务器返回错误:(500)内部服务器错误   Source = System StackTrace:          在System.Net.WebClient.UploadDataInternal(Uri地址,字符串方法,字节[]数据,WebRequest和请求)          在System.Net.WebClient.UploadData(Uri地址,字符串方法,字节[]数据)          在System.Net.WebClient.UploadData(字符串地址,字节[]数据)

2 个答案:

答案 0 :(得分:0)

这就是我将json对象序列化为字符串并将json发送到web api的方法,只是为了帮助:

//Get the json
private JsonResult GetJsonResult()
{
    //whatever json you are expecting on api side
    return Json(new { Number = "Num", type = "getalldetails" });
}

private void Update()
{
    var URI = new Uri("http://hostname/api/controller/GetDetails");
    //serialize json object to string, .Data just to get json data
    string jsonText = JsonConvert.SerializeObject(GetJsonResult().Data);

    //post to api
    using (var client = new WebClient())
    {
        client.Encoding = Encoding.UTF8;
        client.Headers.Add("Content-Type", "text/json");
        client.UploadString(URI, "POST", jsonText);
    }
}

我在网络API端启用了跨域。

答案 1 :(得分:0)

自从我看到这个以来已经很长时间了。

现在我几乎看到了我想到的所有可能性,并在评论和答案中提出了建议。

第二天,当我尝试同样的事情时,它运作顺畅!

因此,我得出的结论是可能问题出现在服务器端。我使用Azure,在那一天,可能出现了一些问题,可能导致了500:内部服务器错误。从那以后它一直运作良好。