You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Function App 1未执行DefaultAzureCredential.GetToken问题求助

问题排查与解决方案:Function App 托管身份认证SQL失败(未触发DefaultAzureCredential.GetToken)

核心问题

Function App 1在执行Start ConfigureServices后未触发DefaultAzureCredential.GetToken步骤,导致无法通过托管身份认证SQL;Function App 2与前者环境、配置、代码完全一致但运行正常。Function App 1此前基于.NET Framework 6.0,已通过命令Set-AzWebApp -NetFrameworkVersion v4.8 -Name $App -ResourceGroupName $ResoureGroup降级至4.8并重启,但问题依旧。

排查思路

1. 验证Function Runtime实际生效版本

  • 登录Function App 1的Kudu控制台,查看D:\home\site\wwwroot\bin下Microsoft.Azure.WebJobs.Host.dll的版本,确认Runtime ~4是否正确加载(需匹配.NET Framework 4.8对应版本)
  • 在Kudu的Environment页面,检查FUNCTIONS_EXTENSION_VERSION环境变量是否明确设置为~4,避免自动升级导致版本不一致

2. 检查托管身份的运行时上下文

  • 在Function App 1中添加测试代码,直接调用DefaultAzureCredential.GetToken并输出日志,验证是否能正常获取Token:
    var credential = new DefaultAzureCredential();
    var token = await credential.GetTokenAsync(new TokenRequestContext(new[] { "https://database.windows.net/.default" }));
    log.LogInformation($"Token obtained: {token.Token.Substring(0, 10)}...");
    
    若失败则捕获异常信息,排查身份是否被正确注入
  • 确认Function App 1的系统分配托管身份已启用,且在SQL数据库的Azure AD用户/角色配置与Function App 2完全一致

3. 清理.NET版本降级后的残留配置

  • 检查Function App 1的web.config文件,确认httpRuntime的targetFramework为4.8,无.NET 6相关残留配置:
    <system.web>
      <httpRuntime targetFramework="4.8" />
    </system.web>
    
  • 在Kudu控制台清理D:\home\site\wwwroot下的旧部署文件,重新部署相同制品,避免旧.NET 6依赖文件干扰

4. 排查App Service Plan环境差异

  • 对比ASP1和ASP2的WEBSITE_LOAD_USER_PROFILE环境变量设置,若ASP1为false可能影响身份认证组件加载,建议设为true后重启Function App
  • 在Kudu的DebugConsole执行whoami命令,确认ASP1与ASP2的运行身份是否一致,排查沙箱限制差异

5. 启用详细日志定位问题

  • 在Function App 1的Diagnostics settings中开启FunctionAppLogs并设置日志级别为Verbose,查看ConfigureServices阶段的详细日志,确认是否有组件加载失败或异常
  • 检查Application Insights中的依赖跟踪,查找DefaultAzureCredential相关的错误日志

解决方案建议

  1. 强制锁定Runtime版本:通过Azure门户手动设置Function App 1的FUNCTIONS_EXTENSION_VERSION为~4,重启应用避免自动升级导致版本不匹配
  2. 重置托管身份:先禁用再重新启用Function App 1的系统分配托管身份,重新配置SQL数据库的Azure AD权限,确保身份上下文正确注入
  3. 清理部署缓存:在Kudu控制台执行del D:\home\site\wwwroot\* /s /q清空旧文件后重新部署制品,消除旧版本依赖残留
  4. 调整ASP配置:将ASP1的WEBSITE_LOAD_USER_PROFILE设为true,重启Function App确保身份认证组件正常加载

内容的提问来源于stack exchange,提问作者ATY

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 18:12:59