给定路径格式不支持c#

时间:2015-09-06 22:41:19

标签: c# xml xslt

尝试使用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();但是给我同样的情况
我怎么解决这个问题?

1 个答案:

答案 0 :(得分:0)

不幸的是,从您的问题中不清楚您使用的是Silverlight(或者至少某种平台以某种方式触发此方法))。当我开始搜索QuickDemand时,事实证明这只是在SilverLight(或类似的?)环境中调用的,所以我在考虑这一点时重写了我的答案。

at System.Security.Permissions.FileIOPermission.QuickDemand

此错误由this block of code in the reference source引起。从那里可以看出,如果路径在第二个位置上方包含冒号,则认为它无效。

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

无论哪种方式,如果这没有帮助,请转到Exceptions屏幕并检查NotSupportedException,然后在Debug窗口中取消选中" Just my code"并检查"启用.NET框架源步进"。这样,您可以在抛出错误的位置中断,并使用IntelliSense和调试窗口找出导致此错误的上下文(即实际路径)。

另外,从我之前的帖子中,如果这没有帮助:

  • 使用最小的XSLT尝试您的代码(这很重要!)
  • 运行后,添加xsl:include
  • 运行后,添加document(如果您使用它,另外,在设置中启用它)
  • 一旦你跑完了......好吧,你得到漂移