我正在学校里做一个最后的项目,发现了很多新东西。我们将制作一个使用Google Cloud API并将其部署到Azure的API。
我只是搜遍了这个地方,似乎每个人都只是使用一项服务或另一项服务,而不是一起使用。
我有一个基本的.net Core API程序,带有初始控制器ValuesController。从Google Cloud获取ServiceKey后,我使用了其中的基本教程代码之一来调用带有图像的Vision API。我的问题是,一切都可以在localhost上运行,但是将站点部署到Azure并在浏览器中调用该控制器后,Azure站点始终会给我500个内部服务器错误:
无法加载资源: 服务器响应状态为500 (内部服务器错误)。
我试图为Azure设置调试,但没有成功。
`[Route("api/sleepy")]
[ApiController]
public class ValuesController : ControllerBase
{
// GET api/values
[HttpGet]
public ActionResult<IEnumerable<string>> Get()
{
List<String> da = new List<String>();
var client = ImageAnnotatorClient.Create();
var image = Image.FromFile("shit.png");
var response = client.DetectLabels(image);
foreach (var annotation in response)
{
if (annotation.Description != null)
{
Console.WriteLine(annotation.Description);
da.Add(annotation.Description);
}
}
foreach (var stuff in da)
{
Console.WriteLine(stuff);
}
System.Threading.Thread.Sleep(5000);
return Ok(da);
} `
当我刚刚从ValueController的GET中返回一个字符串或其他内容(适用于Azure站点)时,我不明白我的这个问题,本地主机获得了正确的信息,但由于它无法在本地运行而丢失了某些信息Azure部署的站点。
我一直尝试使用的网站是: https://webapplication220190211113216.azurewebsites.net/api/sleepy。测试这只是暂时的。图像shit.png是一只狗的照片,位于项目的根部。
我在这里想念什么?如果有人至少可以指导我正确的方向,我将非常感激,因为我在google上找不到任何答案。 :)
编辑: 我设法通过使用常规Http请求找到了一种解决方法,听到使用客户端库导致Azure上出现500错误的原因仍然很有趣。 :)