Azure api 在本地工作但不在 Azure 部署中工作,用于需要来自 Azure sql 数据库的数据的端点。具有硬编码数据的端点虽然很好

Azure api works locally but not in Azure deployment, for the endpoint which need data from Azure sql db. Endpoint with hardcoded data is fine though

我已经将 .net 核心 Web api 部署到 Azure 应用服务。 API 的一个端点没有从数据库中获取任何东西的工作正常。

[Route("api/[controller]")]
[ApiController]
public class HomeController : ControllerBase
{
    [HttpGet]
    public JsonResult Get()
    {
        return new JsonResult("Test data 333"); // Works fine  
                                               // after deployment and get the data  
    }
}    

但是 API 的另一个端点必须从数据库(Azure SQL 数据库)获取数据 work 并且出现类似“apiName.azurewebsites.net/api/controllerName/gtalbsds”的错误,如下图所示。但是相同的端点在 本地 与 AZURE SQL 在连接字符串中配置的数据库

工作正常

appsettings.json

"DefaultConnection": "Server=tcp:<azureServereName>,1433;Initial Catalog=<myDBName>;   
Persist Security Info=False;User ID=<CorrectUserName>;    
Password=<correctPassword>;MultipleActiveResultSets=False;
Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"

C# api 代码如下

[Route("gtalbeds")]
    [HttpGet]
    public JsonResult Get()
    {
        ItemBasicDetailsList result = new ItemBasicDetailsList();
        using (var context = new myDBContext(this._config))
        {

            var items = context.ItemBasicDetails.ToList();
            if (items != null)
            {
                result = new ItemBasicDetailsList()
                {
                    PackageFee = 150,
                    DeliveryFee = 0,
                    ItemBasicDetails = items
                };
            }
            return new JsonResult(result);
        }
    }

我能够解决它。实际上在 Azure SQL 数据库实例中,“防火墙设置”--> 允许 Azure 服务和资源访问此服务器 设置为没有。设置为YES后,问题解决。

签入 Azure,SQL 如果“防火墙设置”--> 允许 Azure 服务和资源访问此服务器“与您的应用链接的服务器是Yes。如果设置为 No,则将其更改为 Yes。这将解决问题。