關於vs發布專案時webconfig替換語法也是最近才學到的東西,寫這篇文章就當是作個備忘錄吧,如果能幫助別人能夠學習到webconfig如何替換那就再好不過了。
剛開始學習的時候就沒聽說過這兩個檔案的作用,也是挺悲哀的,還是在工作中了解到的。
我們新建乙個mvc的專案web.config下一定會有web.debug.config和web.release.config這兩個檔案。如圖
肯定是他們的作用的,作用還挺大的。在發布專案的時候我們經常會換掉資料庫的連線字串或者將除錯模式去掉。這個操作不夠人性化。這兩個檔案的作用就是你在發布的時候去替換web.config檔案中的節點。debug模式就呼叫web.debug.config,反之也是一樣的。
我相信在工作幾乎所有人都會採用這種方式,第一次用的時候感覺還挺驚豔的,當然包括我。如果用一句通俗的話來解釋,可以這麼說,你在發布專案的時候對web.config節點做的一些修改,都可以在這兩個檔案用相應的語法去完成。沒必要每次發布都去改。
首先轉換的語句是寫在web.debug.config或則web.release.config裡面的。關於「用於web應用程式專案部署的web.config轉換語法」,可以熟悉一下微軟的,寫的很全面
下面這段話也是引用微軟的文件
web.config 檔案通常包括根據應用程式的執行環境而必須不同的設定。
例如,在部署 web.config 檔案時,您可能必須更改資料庫連線字串或禁用除錯。
對於 web 應用程式專案,asp.net 提供了一些工具,用於自動完成在部署這些專案時更改**換)web.config 檔案的過程。
對於要部署到的每個環境,您將建立乙個轉換檔案,該檔案僅指定原始
web.config 檔案和適用於該環境的已部署 web.config 檔案之間的差異。
轉換檔案是乙個 xml 檔案,該檔案指定在部署 web.config 檔案時應如何更改該檔案。
轉換操作通過使用在 xml-document-transform
命名空間(對映到 xdt
字首)中定義的
xml 特性來指定。
xml-document-transform
命名空間定義兩個特性:locator
和 transform
。locator
特性指定要以某種方式更改的
web.config 元素或一組元素。
transform
特性指定要對 locator
特性所查詢的元素執行哪些操作。
我們就先來寫乙個簡單的事例體會一下。在發布專案時,在web.release.config中替換掉web.config中的資料庫連線字串,首先在web.config中寫乙個資料庫連線字串,他是這樣的:
好的,我們將他列印出來:public class homecontroller : controller如圖:}
」當我們發布專案的時候,肯定會對資料庫的連線字串做修改,所有我們需要在web.release.config中寫一些替換的語句
<?xml version="1.0" encoding="utf-8"?>稍微解釋一下:
1.首先要在
xml-document-transform
命名空間(對映到
xdt字首)中定義的
xml 特性來指定,也就是節點中宣告
xmlns:xdt="2.transform是要幹什麼,replace就是替換掉的意思。locator就是定位器的意思,就是查詢元素。
xdt:transform="replace" xdt:locator="match(name)語法挺簡單的。現在我們來發布專案,發布檔案系統的形式之後我們會在web.config檔案中看到已經被替換了
我們發現的確是整個節點都被替換了,注意的是要name區分大小寫。
文章有點簡單,更詳細的語法可以看看微軟的
《vs發布問題》
我上班的第乙個活,就是重改我們公司的 雖然公司規模不大,但大小也是註冊了的公司,而且是本大小姐乙個人負責全部,從畫頁面到後台管理到設計資料庫都是我乙個人幹,我真服了!不過既然是第乙份工作我就好好幹吧 後裝的iis需要註冊一下,到命令提示符裡打 cmd彈出dos命令 c windows microso...
vs遠端發布
安裝iis管理服務web management service 在iis中,選擇伺服器結點,然後在內容裡面開啟 管理服務 右邊操作欄裡面停止服務,把 啟用遠端連線 前面核取方塊選上。然後選在下面的使用windows憑據或iis使用者。點右邊的應用,然後啟動服務。選中你要發布的 的站點節點,在內容裡面...
VS使用WEB DEPLOY發布
背景是這樣的,公司有兩台伺服器,平時一台備用,另一台做為主生產機器。當有大量補丁或者安裝什麼東西需要重啟的時候,交其中一台直接關掉iis,然後重啟即可,此時另一台負責處理使用者請求。每次複製過去的檔案量巨大。web.config難以把控,雖然使用release和debug來控制連線字串,但是,必然不...