Asp.net

發布沒有改變 web.config?

  • February 28, 2020

我做了一個web.config完整的文件,它沒有顯示 XML 錯誤)

<?xml version="1.0"?>
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
 <configSections>
     ...
     <location path="." inheritInChildApplications="false">
       <connectionStrings>
         <add name="ElmahLog" connectionString="data source=~/App_Data/Error.db" />
         <add name="database" connectionString="w" providerName="System.Data.EntityClient"/>
       </connectionStrings>
     </location>
 ...

帶有轉換文件 ( web.Staging.config)

<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
 <connectionStrings>
   <add name="database"
     connectionString="c"
     providerName="System.Data.EntityClient"
     xdt:Transform="SetAttributes" xdt:Locator="Match(name)" />
 </connectionStrings>
 <system.web>
   <compilation xdt:Transform="RemoveAttributes(debug)" />
   <customErrors defaultRedirect="error.aspx"
     mode="RemoteOnly" xdt:Transform="Replace">
   </customErrors>
 </system.web>
</configuration>

我正在以Staging模式發布(右鍵點擊網站 > 發布 > 方法:文件系統 …)

------ Build started: Project: Drawing, Configuration: Staging Any CPU ------
 Drawing -> D:\Project\bin\Staging\Drawing.dll
------ Build started: Project: MySystem, Configuration: Staging Any CPU ------
 MySystem -> D:\Project\bin\Staging\MySystem.dll
...

但是當我查看web.config輸出文件夾中的時,它並沒有改變。

我在建構日誌中發現了以下內容:

D:\Project\Web.Staging.config(3,2): Warning : No element in the source document matches '/configuration'
D:\Project\Web.Staging.config(3,2): Warning : No element in the source document matches '/configuration'
D:\Project\Web.Staging.config(3,2): Warning : No element in the source document matches '/configuration'
Transformed web.config using Web.Staging.config into obj\Staging\TransformWebConfig\transformed\web.config.

可能是什麼問題呢?我這樣做對嗎?

我發現了兩件事:

  • 您不能在<configuration>標籤上設置命名空間(例如: for <location path="." inheritInChildApplications="false">
  • 您必須注意轉換文件中的正確層次結構。

喜歡

<configuration>
 <location>
   <connectionStrings>

代替

<configuration>
 <connectionStrings>

回答晚了,但也許我可以讓別人頭疼。在 Visual Studio 2013 中,有兩個位置可以選擇建構和部署的配置。配置管理器,然後再次使用 Publish Web,嚮導中名為“設置”的第三步允許您選擇要使用的配置。如果您不選擇新配置,它將使用所選配置的轉換而不是您的配置。

引用自:https://stackoverflow.com/questions/5434102