【发布时间】:2015-05-19 05:52:33
【问题描述】:
这就是问题所在。我正在将 ASP.NET Web API 与我的项目集成,并将请求 URL 存储在 web.config 中。在我的代码中,我使用这些 URL 向 Web API 发出请求并发送和接收数据。我可以向您保证,这些 URL 工作正常。这里的问题在于这个单一的 URL。
当我在本地机器上运行这两个项目并且数据流正确时,它的工作原理。但是当我在托管后在线测试运行它时,相同的服务无法向我发送数据。相反,我在 catch 块中收到以下异常:
远程服务器返回错误:(500) Internal Server Error.
我已经确认以下是真实和正确的:
- 两个项目中的连接字符串。
- 没有拼写错误。
- 没有错误的 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 网址:
<add key="GetDetails" value="http://hostname/api/controller/GetDetails" />
此外,我在 Web API 端设置了错误日志,以防出现错误请求或类似情况,但在这种情况下没有插入新记录。所以这让我对问题出在哪里感到困惑。
这是例外情况:
System.Net.WebException 被捕获 HResult=-2146233079 Message=The 远程服务器返回错误:(500) 内部服务器错误。
源 = 系统堆栈跟踪: 在 System.Net.WebClient.UploadDataInternal(Uri 地址,String 方法,Byte[] 数据,WebRequest& 请求) 在 System.Net.WebClient.UploadData(Uri 地址,String 方法,Byte[] 数据) 在 System.Net.WebClient.UploadData(String address, Byte[] data)
【问题讨论】:
-
你确定 serviceModel.type 是小写字母吗?
-
是的。我已经仔细检查了参数。它们都是正确的。事实上,它也在本地机器上工作。
-
您是否使用 postman 或类似工具手动尝试过 API?
-
我刚刚遇到了完全相同的问题,但是我使用了带有 json 的 UploadString,问题出在我的 json 字符串上,所以我认为您的问题出在字节数组上。
-
如果您在生产环境中将 API 项目的 web.config 中的自定义错误“打开”,您是否得到任何其他详细信息?它仅在 localhost 中有效的事实可能表明缺少对服务器的依赖?
标签: c# asp.net serialization asp.net-web-api