Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Web API:远程服务器返回了一个错误。(500)内部服务器错误。仅当联机且不在本地计算机中时_C#_Asp.net_Serialization_Asp.net Web Api - Fatal编程技术网

C# Web API:远程服务器返回了一个错误。(500)内部服务器错误。仅当联机且不在本地计算机中时

C# Web API:远程服务器返回了一个错误。(500)内部服务器错误。仅当联机且不在本地计算机中时,c#,asp.net,serialization,asp.net-web-api,C#,Asp.net,Serialization,Asp.net Web Api,问题就在这里。我将ASP.NET Web API与我的项目集成,并将请求URL存储在Web.config中。在我的代码中,我使用这些URL向Web API发出请求,并发送和接收数据。我可以向您保证,URL工作正常。这里的问题是这个URL 当我在本地机器上运行这两个项目并且数据流正常时,它就会工作。但当我在托管后在线测试它时,同一个服务无法向我发送数据。相反,我在catch块中收到以下异常: 远程服务器返回错误:(500)内部服务器错误 我已经确认以下内容是真实和正确的: 两个项目中的连接字符串

问题就在这里。我将ASP.NET Web API与我的项目集成,并将请求URL存储在
Web.config
中。在我的代码中,我使用这些URL向Web API发出请求,并发送和接收数据。我可以向您保证,URL工作正常。这里的问题是这个URL

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

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

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

  • 两个项目中的连接字符串
  • 没有拼写错误
  • 没有错误的URL
  • 在本地进行调试时,不会显示错误并成功进行
  • 完美地处理本地数据并接收正确的数据,而不是在线工作。
  • 我还尝试重新托管。但还是一样。不确定这里会有什么问题

    以下是控制器方法代码:

    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
    URL:

    <add key="GetDetails" value="http://hostname/api/controller/GetDetails" />
    
    
    
    此外,我在Web API端设置了错误日志,以防出现错误请求或类似情况,但在这种情况下不会插入新记录。这让我很困惑,问题在哪里

    这就是例外情况:

    已捕获System.Net.WebException HResult=-2146233079消息= 远程服务器返回错误:(500)内部服务器错误。
    Source=系统堆栈跟踪: 位于System.Net.WebClient.UploadDataInternal(Uri地址、字符串方法、字节[]数据、WebRequest和request) 位于System.Net.WebClient.UploadData(Uri地址、字符串方法、字节[]数据) 在System.Net.WebClient.UploadData(字符串地址,字节[]数据)


    这就是我将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);
        }
    }
    

    我已经在web api方面启用了跨域功能。

    我已经很久没有看到这个了

    现在,我几乎在考虑我所想到的每一种可能性,并且在这里的评论和答案中提出了这种可能性

    第二天,当我试着做同样的事情,它工作顺利


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

    您确定serviceModel.type是小写字母吗?是的。我已经仔细检查了参数。它们都是合适的。事实上,它也在本地机器上工作。您是否使用postman或类似工具手动尝试过API?我只是遇到了完全相同的问题,但我使用了UploadString和json,问题在于我的json字符串,因此我认为您的问题在于您的字节数组。如果您在生产API项目的web.config中打开自定义错误,你还有其他的细节吗?它仅在localhost中工作这一事实可能表明缺少对服务器的依赖关系?