Azure App Service WebJob报连接字符串格式不符合规范错误
问题根因
本次报错由连接字符串配置错误直接导致,共两处问题:
- 连接字符串末尾存在冗余转义双引号:你当前配置的connectionString值结尾为
application name=EntityFramework",即字符串尾部多了一个孤立的双引号,计算字符长度后这个多余字符刚好落在报错提示的索引197位置,是触发本次格式异常的直接原因。 - 提供程序配置与连接字符串格式不匹配:你配置的
providerName="System.Data.EntityClient"是EF模型优先/数据库优先(带edmx文件)场景下使用的提供程序,要求连接字符串必须包含metadata元数据段,但你当前写的是纯SqlClient直连格式,没有对应元数据配置,就算修复了引号问题,后续也会抛出提供程序不匹配的错误。
本地运行正常是因为本地调试时通常会读取本地用户机密配置、或者编译时未同步这份错误的配置文件,部署到Azure WebJob时加载的是你贴出的错误配置,才会出现本地正常线上报错的现象。
修复方案
根据你实际使用的EF模式选择对应配置即可:
场景1:使用EF Code First模式
修改两处配置:
- 删除连接字符串末尾多余的
" - 将providerName的值从
System.Data.EntityClient改为System.Data.SqlClient
修正后的配置如下:
<connectionStrings> <add name="Entities" connectionString="data source=[Server Name];initial catalog=[Database Name];user id=[Login id];password=[Password];multipleactiveresultsets=True;application name=EntityFramework" providerName="System.Data.SqlClient" /> </connectionStrings>
场景2:使用EF Database First/Model First模式(带edmx模型文件)
- 删除原来错加在整个连接字符串末尾的
&quot; - 补全EntityClient要求的metadata配置段,内层数据库连接参数用
"正确包裹
修正后的配置参考:
<connectionStrings> <add name="Entities" connectionString="metadata=res://*/你的模型命名空间.你的模型名.csdl|res://*/你的模型命名空间.你的模型名.ssdl|res://*/你的模型命名空间.你的模型名.msl;provider=System.Data.SqlClient;provider connection string="data source=[Server Name];initial catalog=[Database Name];user id=[Login id];password=[Password];multipleactiveresultsets=True;application name=EntityFramework"" providerName="System.Data.EntityClient" /> </connectionStrings>
额外检查项
如果你在Azure App Service的【配置】-【连接字符串】页单独配置了同名连接字符串用来覆盖app.config的配置,一定要同步检查该处配置是否存在同样的多余引号问题,避免配置覆盖导致修复不生效。
内容的提问来源于stack exchange,提问作者Psychonaut007
相关产品推荐
相关产品推荐

