在我的web.config
中<connectionStrings>
<add name="Context" connectionString="Server=tcp:database.windows.net,1433;Database=DbDev;User ID=xxxx;Password=xxxx.;Trusted_Connection=False;Encrypt=True;MultipleActiveResultSets=True"
providerName="System.Data.SqlClient" />
<connectionStrings/>
我的web.Debug.config
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<connectionStrings>
<add name="Context" connectionString="Server=tcp:database.windows.net;Database=DbDev;
User ID=xxxx;Password=xxxx.;
Trusted_Connection=False;Encrypt=True;MultipleActiveResultSets=True"
providerName="System.Data.SqlClient" xdt:Transform="Replace" xdt:Locator="Match(name)"/>
</connectionStrings>
<system.web>
<customErrors mode="Off" xdt:Transform="Replace">
</customErrors>
</system.web>
</configuration>
在我的web.Release.config
中<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<connectionStrings>
<add name="Context" connectionString="Server=tcp:database.windows.net;
Database=DbProd;User ID=xxxx;Password=xxxx.;
Trusted_Connection=False;Encrypt=True;MultipleActiveResultSets=True"
providerName="System.Data.SqlClient"
xdt:Transform="Replace" xdt:Locator="Match(name)" />
</connectionStrings>
<system.web>
<compilation xdt:Transform="RemoveAttributes(debug)" />
<customErrors defaultRedirect="GenericError.htm" mode="On" xdt:Transform="Replace">
<error statusCode="500" redirect="InternalError.htm"/>
</customErrors>
</system.web>
</configuration>
它只是没有获得生产数据库DbProd
答案 0 :(得分:3)
我认为在VS中运行'release'模式时,它会转换web.release.config文件,但由于某些原因(cache?bin?)它不会使用它。但是,当我发布它时在Azure环境中,它将正确获取配置
答案 1 :(得分:1)
xdt:Locator="Match(name)"
表示如果name
属性值匹配,则会应用转换后的值。
在web.config中你有
<add name="Context"
但是在web.release.config
中<add name="PoqContext"
将连接字符串名称更改为相同的值应该会对您有所帮助。另外,请查看Web.config Transformation Syntax 了解其他可用选项