Сбой преобразования web.config, когда для преобразования не существует значения.

Сегодня у нас был небольшой инцидент, который заставил меня задуматься. У нас есть проект с довольно стандартной настройкой преобразования web.config для наших различных конфигураций. Существует раздел, управляющий доступом к нашим службам DAO, который выглядит следующим образом:

<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 не совпадает. К сожалению, разработчик, создавший его, этого не сделал, а также локально отлаживал работающие службы, что привело к тому, что тестовое развертывание, да, указывало на живое. К счастью, мы довольно быстро подхватили его, но я уверен, что вы можете увидеть здесь потенциал для сильной боли!

Я подумал о ваших намерениях при создании файлов преобразования, и мне кажется, что если вы вставите преобразование, которое вы намереваетесь преобразовать что-то. Так что было бы хорошо, если бы преобразование (и, следовательно, развертывание) не удалось, если бы было преобразование DaoEndPoint, но не было соответствующего элемента DaoEndPoint в основном файле .config.

Итак, я собираю мнения людей, может быть, это будет полезно? Это явное излишество? Я полностью упускаю суть?

Кроме того, есть ли что-нибудь, что делает это? Я рад покопаться и разработать решение, но я был бы счастлив, если бы кто-то проделал всю работу за меня ;)

6
задан Chris Surfleet 15 March 2012 в 16:19
поделиться