Запрет SlowCheetah от кодирования "<", ">" и добавления & # xD; & # xA; для возврата каретки

Я использую SlowCheetah для преобразования моего файла конфигурации приложения. Моя проблема в том, что некоторые из значений, которые он заменяет, являются операторами SQL, которые имеют такие условия, как ... where x > 1 и > в конечном итоге кодируется как &gt;, \r\n заканчивается как &#xD;&#xA; и так далее. Если я отправлю такого рода заявление в базу данных, будет выдано сообщение об ошибке.

Как мне это предотвратить? Я уже погуглил без удачи.

3 ответа

Решение

Чтобы "исправить" эту проблему - если вы можете так это назвать - я переместил раздел, содержащий специальные символы, которые кодируются SlowCheetah, в другой файл и установил configSource атрибут в разделе, чтобы указать на новый файл. В основном я сделал это:

<pluginsSection configSource="Configs\pluginsConfig.xml"> 
</pluginSection>

Теперь SlowCheetah превращает App.config файл и содержимое pluginsConfig.xml не затрагиваются.

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

пожалуйста, подумайте об использовании хранимых процедур, которые скрывают логику базы данных, имена, операторы и тому подобное (ваш конфиг будет просто содержать вызовы хранимых процедур с параметрами - без запрета xml-символов)

если вы все еще настаиваете на том, чтобы размещать свои sql-запросы в виде простого текста - вот почему.net имеет ресурсы... вместо того, чтобы помещать эти операторы в ваш файл condig, поместите их в ресурсы вашего проекта (файл с расширением resx)

для приложений winforms: ресурсы, где их разместить и как ссылаться на них в C#

для веб-приложений: http://msdn.microsoft.com/en-us/library/ms247246%28v=vs.100%29.aspx

для библиотек (файлы dll): http://www.codeproject.com/Articles/5447/NET-Localization-using-Resource-file

Эти символы являются запрещенными символами в XML. Медленный Cheetah использует XmlTransformableDocument, который, я думаю, наследует от XmlDocument, поэтому при применении преобразования - кодируются все символы, отличные от XML-разметки, включая ваши знаки ">".

Я не думаю, что вы можете легко исправить это поведение, и не уверен, почему вы используете преобразования в недействительном документе XML.

Другие вопросы по тегам