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

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