我们在我们的一个API服务应用程序(ASP.NET WEB API 2)中面临与服务器相关的问题。当我们通过站点域名(api.xxx.com)访问该服务时,该服务将返回内部服务器错误(500)。但是,如果我们通过站点IP地址(11.111.11.111)访问相同的服务,则它将返回正确的结果(404)。仅当服务器尝试返回404时,才会发生此问题。
对于具有数据的相同API服务和不同参数,它可以正常工作。
我们已经检查了代码端,没有记录错误。
示例代码:
public IHttpActionResult GetEmployee(int employeeId)
{
try
{
var employee = employeeManager.GetEmployee(employeeId);
if (employee != null)
{
return Ok(employee);
}
}
catch (Exception ex)
{
Logger.Error("Error occured in GetEmployee: " + ex);
}
return NotFound();
}
我们将站点托管在Azure服务器中。
域名托管/负载均衡器/ ARR服务器是否存在任何问题。
请帮助我们解决此问题。
先谢谢了。
答案 0 :(得分:0)
假设使用Azure应用服务,因为您没有清楚地声明它,并且标签几乎没有造成混淆。
您被该404误导了。404由ARR返回,而不是由您的API返回。发生这种情况是因为您的请求需要一个Host: domain.com
,就像Netscape时代一样,您不能仅以HTTP / 1.0的方式进入您的网站。
您要访问的公共IP是整个App Service标记(请考虑成千上万的租户/应用程序),Host
标头可帮助将请求路由到您的 API。
坏消息是您的API返回HTTP 500,但是您可以调试它,启用日志记录,通过web.config禁用自定义错误(这样您就可以看到堆栈跟踪)并打开失败的请求跟踪。