为什么发布 Azure 函数后出现内部服务器错误?
Why I get Internal Server Error after publishing Azure Function?
我在使用 Azure Sql 数据库的 Azure Functions 中创建了一个 API。
我有这条路线:
[FunctionName("GetAllClassesForTeacher")]
public IActionResult GetAllClassesForTeacher(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = null)] HttpRequestMessage req,
ILogger log)
{
var headers = req.Headers;
if (headers.TryGetValues("TeacherId", out var Teacher))
{
int TeacherId = Convert.ToInt32(Teacher.First());
var result = _classDistributionServices.GetAllClassesForTeacher(TeacherId);
if (result != null)
{
return new OkObjectResult(result);
}
return new NotFoundResult();
}
return new NotFoundResult();
}
在本地测试时,它每次都有效。但是在 Azure 门户上发布之后,我从邮递员那里回来了:
{
"statusCode": 500,
"message": "Internal server error",
"activityId": "f98c4112-0c31-4841-99a5-c79dffa41d86"
我 tried/did 到现在为止:
- 从 Azure Function 中获取 IP 并将其注册到防火墙中,然后
来自 Azure Sql 服务器的虚拟网络。
- 我已经确定来自 local.settings.json 的 ConnectionString
已上传至门户
- 我已经在 API 管理中声明了这条路线。
但错误依然存在。
我有一种感觉,即使我已经注册了正确的IP,仍然是因为数据库防火墙?
你能帮帮我吗?
您可以通过几种方法找出问题所在:
1-启用 Application Insights 并使用实时指标捕获错误
2-使用 Kudu 并检查有关错误的更多详细信息(例如 https://myfunctionapp.scm.azurewebsites.net/azurejobs/#/functions)
3-您还可以用 try/catch 包装您的代码,并在响应输出中抛出异常的详细信息。
我在使用 Azure Sql 数据库的 Azure Functions 中创建了一个 API。 我有这条路线:
[FunctionName("GetAllClassesForTeacher")]
public IActionResult GetAllClassesForTeacher(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = null)] HttpRequestMessage req,
ILogger log)
{
var headers = req.Headers;
if (headers.TryGetValues("TeacherId", out var Teacher))
{
int TeacherId = Convert.ToInt32(Teacher.First());
var result = _classDistributionServices.GetAllClassesForTeacher(TeacherId);
if (result != null)
{
return new OkObjectResult(result);
}
return new NotFoundResult();
}
return new NotFoundResult();
}
在本地测试时,它每次都有效。但是在 Azure 门户上发布之后,我从邮递员那里回来了:
{
"statusCode": 500,
"message": "Internal server error",
"activityId": "f98c4112-0c31-4841-99a5-c79dffa41d86"
我 tried/did 到现在为止:
- 从 Azure Function 中获取 IP 并将其注册到防火墙中,然后 来自 Azure Sql 服务器的虚拟网络。
- 我已经确定来自 local.settings.json 的 ConnectionString 已上传至门户
- 我已经在 API 管理中声明了这条路线。
但错误依然存在。 我有一种感觉,即使我已经注册了正确的IP,仍然是因为数据库防火墙?
你能帮帮我吗?
您可以通过几种方法找出问题所在:
1-启用 Application Insights 并使用实时指标捕获错误
2-使用 Kudu 并检查有关错误的更多详细信息(例如 https://myfunctionapp.scm.azurewebsites.net/azurejobs/#/functions)
3-您还可以用 try/catch 包装您的代码,并在响应输出中抛出异常的详细信息。