今天發生了一些事情,讓我想到了這一點。我們有一個項目,它爲我們的各種配置提供了一個非常標準的web.config變換設置。這裏是控制我們的DAO接入服務部分,看起來像這樣:當變換值不存在時發生web.config變形失敗
<endpoint address="http://myserver/myservice1.svc/basicHttp"
binding="basicHttpBinding" contract="MyAssembly.IItem" name="DataAccessEndPoint"
kind="" endpointConfiguration="" />
<endpoint address="http://myserver/myservice2.svc/basicHttp"
binding="basicHttpBinding" contract="MyAssembly.IItem2" name="LoggingEndPoint"
kind="" endpointConfiguration="" />
以及變換是這樣的:
<endpoint address="http://mytestserver/myservice1.svc" name="DaoEndPoint" xdt:Transform="SetAttributes" xdt:Locator="Match(name)" />
<endpoint address="http://mytestserver/myservice2.svc" name="LoggingEndPoint" xdt:Transform="SetAttributes" xdt:Locator="Match(name)" />
希望你會發現這裏的錯誤 - 對DaoEndPoint名稱不匹配。不幸的是,創建它的開發者沒有,並且也在本地對現場服務進行了調試,這導致了測試部署到,指向。我們很幸運地把它撿起來很快,但我相信你可以看到這裏極端痛苦的可能性!
我在創建轉換文件的時候考慮過你的意圖,在我看來,如果你把你想要轉換的變換。因此,如果在主.config文件中存在DaoEndPoint轉換但沒有匹配的DaoEndPoint項,則轉換(因此部署)失敗將會很好。
因此,我對人們的觀點進行了一些調整,這是否會有用?這是純粹的矯枉過正?我完全錯過了這一點嗎?
此外,有沒有什麼這樣做?我很高興挖掘和開發一個解決方案,但如果有人爲我做了修改,我會更高興;)
不知道會引起異常的任何事情,儘管可能有用。可能只想在主web.config中留下空白值,如果它沒有被轉換,你很快就會在應用程序中出錯。沒有幫助,但可以防止任何意外的PROD訪問。 – dbugger 2012-03-15 23:04:25
這樣做的問題是,如果不添加值,則無法在本地進行調試,這會使我們回到原始問題,當開發人員忘記再次取出該值時... – 2012-03-28 09:12:48