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

如何从Azure WebJob访问Azure SQL数据库及连接报错排查

Azure WebJob连接字符串格式异常问题定位

根因

异常触发点和业务查询逻辑、依赖注入配置、Application Insights接入、部署前删除WinSCP.exe的操作均无关联,核心问题是名为Entities的EF数据库连接字符串格式非法:

  • 本地调试阶段,Visual Studio会自动处理App.config中XML格式的转义字符",将其正确解析为半角双引号,因此本地运行无异常
  • 部署到Azure WebJob环境后,WebJob运行时不会自动处理这层额外转义,会将"识别为连接字符串的普通内容,解析到索引197位置的非法字符时直接抛出System.ArgumentException: 初始化字符串的格式不符合规范,异常正好在首次执行数据库查询var configuration = repository.FirstOrDefault(filterPredicate);时触发。

修复方案

  • 打开项目根目录下的App.config文件,定位到connectionStrings配置节点下名称为Entities的连接字符串项
  • 检查连接字符串内容,删除末尾多余的"转义字符,确认所有"转义符都是成对出现、仅用于包裹连接字符串内部的数据库连接参数段,首尾无残留无匹配的转义字符
    错误配置示例(末尾多了一个"):
    <add name="Entities" connectionString="metadata=res://*/EFModel.csdl|res://*/EFModel.ssdl|res://*/EFModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=tcp:xxx.database.windows.net,1433;Initial Catalog=xxx;User ID=xxx;Password=xxx;MultipleActiveResultSets=True;App=EntityFramework&quot;&quot;" providerName="System.Data.EntityClient" />
    
    正确配置示例:
    <add name="Entities" connectionString="metadata=res://*/EFModel.csdl|res://*/EFModel.ssdl|res://*/EFModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=tcp:xxx.database.windows.net,1433;Initial Catalog=xxx;User ID=xxx;Password=xxx;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
    
  • 修改完成后重新生成项目,重新打包Debug目录为zip包上传部署即可,现有打包部署流程不需要调整。

补充校验方式

如果修改后仍触发同类异常,可通过WebJob对应的Kudu管理页面,进入site/wwwroot/app_data/jobs/[触发类型]/[你的WebJob名称]目录,下载运行时实际加载的配置文件,核对连接字符串内容是否和本地修改后的版本一致,排除打包过程中旧文件残留的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 15:09:20