这是问题所在。我正在使用ASP.NET Web API与我的项目集成,我将请求URL存储在web.config
中。在我的代码中,我使用这些URL来触发对Web API的请求并发送和接收数据。网址工作正常,我可以向你保证。这里的问题是这个单一的URL。
当我在本地计算机上运行两个项目并且数据流正确时,它正在工作。但是当我在托管后测试在线运行它时,同样的服务无法向我发送数据。相反,我在catch块中收到以下异常:
远程服务器返回错误:(500)内部服务器错误。
我已经确认以下内容是真实和正确的:
我也尝试过重新托管。但仍然是一样的。不知道这里可能出现什么问题。
这是控制器方法代码:
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(字符串地址,字节[]数据)
答案 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:内部服务器错误。从那以后它一直运作良好。