c#不支持给定的路径格式

本文关键字:路径 格式 不支持 | 更新日期: 2023-09-27 18:11:32

当尝试使用c#执行XSLT转换时,我得到这个异常:

Exception: System.NotSupportedException: The given path's format is not supported.
   at System.Security.Permissions.FileIOPermission.QuickDemand(FileIOPermissionAccess access, String fullPath, Boolean checkForDuplicates, Boolean needFullPath)    
   at System.Xml.XmlResolver.ResolveUri(Uri baseUri, String relativeUri)
   at System.Xml.XmlUrlResolver.ResolveUri(Uri baseUri, String relativeUri)
   at System.Xml.XmlTextReaderImpl..ctor(String url, XmlNameTable nt)
   at System.Xml.XPath.XPathDocument..ctor(String uri, XmlSpace space)
   at System.Xml.XPath.XPathDocument..ctor(String uri)
   at ConsoleApplication8.Program.TransformXML(String sXmlPath, String sXslPath)

当我尝试运行这段代码

 void test()
 {
     var myXslTrans = new XslCompiledTransform();
     myXslTrans.Load(@"‪C:'Users'ahmed'Desktop'fewf'visio.xsl");
     myXslTrans.Transform(@"‪C:'Users'ahmed'Desktop'fewf'page1.xml", @"‪C:'Users'ahmed'Desktop'fewf'page.html"); 
 }

我尝试使用Path.Combine();,但给我相同的情况
我该如何解决这个问题?

c#不支持给定的路径格式

不幸的是,从你的问题中不清楚你正在使用Silverlight(或至少一些以某种方式触发此方法的平台))。当我开始搜索QuickDemand时,结果发现这只在SilverLight(或类似的?)环境中被调用,所以我正在重写我的答案。

at System.Security.Permissions.FileIOPermission.QuickDemand

这个错误是由参考源代码中的代码块引起的。如上图所示,如果路径在第二个位置上方包含冒号,则认为该路径无效。

在上面的代码中没有显示这一点,但由于这是参考源代码中抛出此特定错误的唯一地方,因此我将假设您拥有的实际代码(可能是XSLT中的任何xsl:include)在第二个位置以外的某个位置包含冒号。

无论哪种方式,如果这没有帮助,转到Exceptions屏幕并检查NotSupportedException,并在Debug窗口取消选中"只是我的代码",并检查"启用。net框架源代码步进"。这样,你就可以在抛出错误的位置中断,并使用智能感知和调试窗口来找出导致此错误的上下文(即实际路径)。

同样,从我以前的帖子,如果这没有帮助:

  • 尝试使用最小的XSLT编写代码(这是至关重要的!)
  • 一旦你已经运行,添加一个xsl:include
  • 一旦你运行了,添加一个document(如果你使用它,另外,在设置中启用它)
  • 一旦你让它运行…你得到了漂移