При доступе к странице я получаю сообщение об ошибке
XmlException: по соображениям безопасности DTD запрещен в этом XML-документе. Чтобы включить обработку DTD, установите для свойства DtdProcessing в XmlReaderSettings значение Parse и передайте настройки в метод XmlReader.Create.
Как вы можете видеть на рисунке мой код ниже, я устанавливаю DtdProcessing на
Код: Выделить всё
ParseКод: Выделить всё
transformObj.Load(xsltPath);
Полный метод выглядит следующим образом:
Код: Выделить всё
public static IHtmlContent RenderXml(this IHtmlHelper htmlHelper, string xml, string xsltPath)
{
XsltArgumentList args = new XsltArgumentList();
// Create XslCompiledTransform object to load and compile XSLT file.
XslCompiledTransform transformObj = new XslCompiledTransform();
transformObj.Load(xsltPath);
// Create XMLReaderSetting object to assign DtdProcessing, Validation type
XmlReaderSettings xmlSettings = new XmlReaderSettings();
xmlSettings.DtdProcessing = DtdProcessing.Parse;
xmlSettings.MaxCharactersFromEntities = 1024; // Prevent DoS attacks
xmlSettings.ValidationType = ValidationType.DTD;
// Create XMLReader object to Transform xml value with XSLT setting
XmlReader reader = XmlReader.Create(new StringReader(xml), xmlSettings);
using (reader)
{
StringWriter writer = new StringWriter();
transformObj.Transform(reader, args, writer);
// Generate HTML string from StringWriter
HtmlString htmlString = new HtmlString(writer.ToString());
return htmlString;
}
}
Код: Выделить всё
@Html.RenderXml(ViewBag.XML as string, ViewBag.XSL as string);
Подробнее здесь: https://stackoverflow.com/questions/608 ... g-xml-file
Мобильная версия