今天发生了一些事情,让我想到了这一点。我们有一个项目,它为我们的各种配置提供了一个非常标准的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