Wednesday, May 30, 2012

Default parameter specifiers are not permitted

   
Context:

Windows XP
Visual Studio 2010
.NET 2.0

Problem:

I have this code:

XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load(reportXslFilename, XsltSettings.TrustedXslt, null);

 
When I ran it in .NET 4.0, it worked fine.  When I switched my project to .NET 2.0, I started getting this error:

System.Xml.Xsl.XslLoadException {"Default parameter specifiers are not permitted"}

Stack trace:
at System.Xml.Xsl.XslCompiledTransform.LoadInternal(Object stylesheet, XsltSettings settings, XmlResolver stylesheetResolver)
   at System.Xml.Xsl.XslCompiledTransform.Load(String stylesheetUri, XsltSettings settings, XmlResolver stylesheetResolver)

...

Solution:

Since the error occurred at xslt.Load(reportXslFilename, XsltSettings.TrustedXslt, null), I thought it was something here.  Well, it turned out that it was something in my XSL.

I had script and something like this:

public string SayHello(string name = "World") { 
  return "Hello " + name; 
}

As you can see here, I have the default value for the parameter "name."

Removing this fixed my problem.  

No comments:

Post a Comment