发布Azure Web App时出现连接字符串嵌套问题求助
解决Azure Web App发布后EF连接字符串嵌套问题
这确实是个挺闹心的发布异常——好好的EF连接字符串被嵌套了一层,手动修复能凑合用,但总不如发布流程顺畅省心。结合我之前遇到的类似情况,给你几个排查和解决的方向:
1. 检查VS发布配置的连接字符串替换规则
打开你的发布配置(右键项目→发布→点击右上角的“查看所有设置”),切换到“连接字符串”选项卡:
- 确认针对
Entities这个连接字符串,你是选择了使用Web.config中的现有值,还是在发布配置里重新输入了完整的EF连接字符串? - 如果是后者,大概率是VS把EF的实体连接字符串当成了普通SQL Server连接字符串处理,导致二次嵌套。正确的做法是:如果Web.config里已经有正确的EF连接字符串,发布时直接保留原有设置,不要在这个界面修改它。
2. 排查Web.Release.config的转换配置
看看项目里的Web.Release.config文件,有没有针对Entities连接字符串的错误转换规则:
- 比如如果有类似下面的配置,要确认
connectionString的值是完整且正确的EF连接字符串,而不是重复嵌套了provider连接字符串:<connectionStrings> <add name="Entities" connectionString="metadata=res://*/TriviaWebModel.csdl|res://*/TriviaWebModel.ssdl|res://*/TriviaWebModel.msl;provider=System.Data.SqlClient;provider connection string="data source=tcp:dolaris.database.windows.net;initial catalog={cata};persist security info=True;user id={usr};password={psw};multipleactiveresultsets=True;application name=EntityFramework"" providerName="System.Data.EntityClient" xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/> </connectionStrings> - 如果转换文件里的内容有误,发布时就会导致连接字符串被错误嵌套。
3. 检查Azure门户的连接字符串配置
登录Azure门户,找到你的Web App,进入配置→连接字符串:
- 确认有没有添加名为
Entities的连接字符串,并且它的类型是自定义(因为EF的实体连接字符串不属于标准的SQL Server类型)。 - 如果这里错误地选择了SQL Server类型,Azure会自动对连接字符串进行包裹处理,进而导致发布后的嵌套问题。如果不需要在门户管理这个连接字符串,直接删除这里的配置即可。
4. 清除VS发布缓存试试
有时候VS的本地缓存会导致奇怪的配置异常,你可以试试:
- 关闭Visual Studio,删除项目目录下的
obj和bin文件夹。 - 重新打开VS,生成解决方案后再尝试发布。
另外,发布前建议点击发布配置里的“预览”按钮,提前查看Web.config的转换结果,这样能在发布前就发现连接字符串的异常,避免反复发布修复。
内容的提问来源于stack exchange,提问作者Hank Tuff
相关产品推荐
相关产品推荐

