发布Azure web app会将连接字符串放入连接字符串中

发布Azure web app会将连接字符串放入连接字符串中,azure,azure-sql-database,azure-web-app-service,Azure,Azure Sql Database,Azure Web App Service,我在Web.config中有一个Azure Web App()和一个连接字符串,如下所示 <connectionStrings> <add name="Entities" connectionString="metadata=res://*/TriviaWebModel.csdl|res://*/TriviaWebModel.ssdl|res://*/TriviaWebModel.msl;provider=System.Data.Sql

我在Web.config中有一个Azure Web App()和一个连接字符串,如下所示

  <connectionStrings>
    <add name="Entities" connectionString="metadata=res://*/TriviaWebModel.csdl|res://*/TriviaWebModel.ssdl|res://*/TriviaWebModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=tcp:dolaris.database.windows.net;initial catalog={cata};persist security info=True;user id={usr};password={psw};multipleactiveresultsets=True;application name=EntityFramework&quot;" providerName="System.Data.EntityClient" /> 
  </connectionStrings>

当我使用Visual Studio 2019版本16.7.2将web应用程序发布到Azure时,web.config将转换为此

  <connectionStrings>
    <add name="Entities" connectionString="metadata=res://*/TriviaWebModel.csdl|res://*/TriviaWebModel.ssdl|res://*/TriviaWebModel.msl;provider=System.Data.SqlClient;provider connection string='metadata=res://*/TriviaWebModel.csdl|res://*/TriviaWebModel.ssdl|res://*/TriviaWebModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=tcp:dolaris.database.windows.net;initial catalog={cata};persist security info=True;user id={usr};password={psw};MultipleActiveResultSets=True;App=EntityFramework&quot;'" providerName="System.Data.EntityClient" />
  </connectionStrings>

它看起来像是将连接字符串放入连接字符串中的转换类型。我可以在服务器上手动修复此问题,使我的应用程序正常工作,但我更希望发布工作正常


我从未见过类似的情况。

提供程序连接字符串包含数据提供程序的有效关键字/值对。无效的提供程序连接字符串在由数据源计算时将导致运行时错误

  <connectionStrings>
    <add name="Entities" connectionString="metadata=res://*/TriviaWebModel.csdl|res://*/TriviaWebModel.ssdl|res://*/TriviaWebModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=tcp:dolaris.database.windows.net;initial catalog={cata};persist security info=True;user id={usr};password={psw};multipleactiveresultsets=True;application name=EntityFramework&quot;" providerName="System.Data.EntityClient" /> 
  </connectionStrings>
确保根据的常规语法转义该值。例如,考虑以下连接字符串:<代码>服务器=服务器名称;用户ID=用户ID。它必须转义,因为它包含分号。由于它不包含双引号,因此它们可用于转义:

Provider Connection String ="Server=serverName; User ID = userID";
尝试从以下位置更改连接字符串:

<add 
  name="Entities" 
  connectionString="metadata=res://*/TriviaWebModel.csdl|res://*/TriviaWebModel.ssdl|res://*/TriviaWebModel.msl;
  provider=System.Data.SqlClient;
  provider connection string=&quot;
  data source=tcp:dolaris.database.windows.net;
  initial catalog={cata};
  persist security info=True;
  user id={usr};
  password={psw};
  multipleactiveresultsets=True;
  application name=EntityFramework&quot;" 
  providerName="System.Data.EntityClient" />

有什么区别?请看“提供者连接字符串='metadata=res://*/TriviaWebModel.csdl | res://*/TriviaWebModel.ssdl…”部分