gpt4 book ai didi

c# - XslLoadException : Resolving of external URIs was prohibited

转载 作者:数据小太阳 更新时间:2023-10-29 02:20:26 29 4
gpt4 key购买 nike

我有 xslt 工作表,其中包含另一个 xslt 文件的标签,所有文件都编译正确且没有错误但是当运行以下代码时我得到异常

var myXslTrans = new XslCompiledTransform();
XsltSettings sets = new XsltSettings();
sets.EnableScript = true;
myXslTrans.Load("visio.xsl",sets,null);
myXslTrans.Transform("page1.xml", "page.html");

遵循异常文本和堆栈跟踪:

System.Xml.Xsl.XslLoadException: 
XSLT compile error. An error occurred \bin\Debug\visio.xsl(116,40).
---> System.Xml.XmlException: Resolving of external URIs was prohibited.
at System.Xml.Xsl.Xslt.XsltLoader.Load(XmlReader reader)
at System.Xml.Xsl.Xslt.XsltLoader.Load(Compiler compiler, Object stylesheet, XmlResolver xmlResolver)
at System.Xml.Xsl.Xslt.Compiler.Compile(Object stylesheet, XmlResolver xmlResolver, QilExpression& qil)
at System.Xml.Xsl.XslCompiledTransform.LoadInternal(Object stylesheet, XsltSettings settings, XmlResolver stylesheetResolver)
at System.Xml.Xsl.XslCompiledTransform.Load(String stylesheetUri, XsltSettings settings, XmlResolver stylesheetResolver)

我尝试通过 this 解决问题但问题依然存在

最佳答案

引自评论/更新的问题:

i copy the files to the project to use it, path variable to get the base directory for the app

是的,但是没有使用路径变量,所以没有效果。

System.Xml.Xsl.XslLoadException: XSLT compile error. An error occurred \bin\Debug\visio.xsl(116,40). ---> System.Xml.XmlException: Resolving of external URIs was prohibited.

这可能意味着一件或几件事情:

  • 您的设置不允许加载外部文档(这是 XslCompiledTransform 的默认设置,请参阅文档)。
  • 您的样式表直接(通过 xsl:importxsl:includedocument())或间接(通过DTD 或解析外部​​实体)。
  • 如果以上内容不(完全)正确,至少错误指向了问题所在。你没有在你的问题中复制它,但你会在 (116, 40) 找到它。

要解决,只需allow loading of external documents :

替换这个:

XsltSettings sets = new XsltSettings();
sets.EnableScript = true;

用这个:

XsltSettings sets = new XsltSettings(true, true);

更新(在您发表评论后)

我注意到另一件事。您将最后一个参数设置为 null,即 according to Microsoft should give you a ArgumentNullException .它不允许为 null,但显然 Microsoft 现在允许它,但它的效果是 UriResolver 无法解析任何内容,因为嘿,它是 null...

不太确定为什么将其设置为 null,但请尝试将其设置为有效值,即:

var resolver = new XmlUrlResolver();
myXslTrans.Load("visio.xsl", sets, resolver);

关于c# - XslLoadException : Resolving of external URIs was prohibited,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32439036/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com