Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cannot compile template with Lookup helper - signature or security transparency is not compatible #268

Closed
Incahuazi opened this issue Sep 26, 2018 · 4 comments · Fixed by #359

Comments

@Incahuazi
Copy link

Hello,

I'm trying to use the following template (TestTemplate) in a console application using .NET Core 2.1 and Handlebars.Net 1.9.5

<!doctype html>

<html>
<head>
    <title>A title</title>
</head>

<body>
    {{ > (lookup TemplateName)}}
</body>
</html>

So the line with {{ > (lookup TemplateName)}} is causing me problems
The idea is to use a partial, where the partial name will be resolved later by passing the TemplateName variable.

However, when I try to compile the template by using

var foo = Resource1.TestTemplate;
Handlebars.Compile(Encoding.UTF8.GetString(foo));

I get the following exception :

System.ArgumentException: Cannot bind to the target method because its signature or security transparency is not compatible with that of the delegate type.
at System.Reflection.RuntimeMethodInfo.CreateDelegateInternal(Type delegateType, Object firstArgument, DelegateBindingFlags bindingFlags)
at HandlebarsDotNet.Compiler.SubExpressionVisitor.GetHelperDelegateFromMethodCallExpression(MethodCallExpression helperCall)
at HandlebarsDotNet.Compiler.SubExpressionVisitor.VisitSubExpression(SubExpressionExpression subex)
at System.Linq.Expressions.ExpressionVisitor.VisitUnary(UnaryExpression node)
at System.Linq.Expressions.UnaryExpression.Accept(ExpressionVisitor visitor)
at System.Dynamic.Utils.ExpressionVisitorUtils.VisitArguments(ExpressionVisitor visitor, IArgumentProvider nodes)
at System.Linq.Expressions.ExpressionVisitor.VisitMethodCall(MethodCallExpression node)
at System.Linq.Expressions.MethodCallExpression.Accept(ExpressionVisitor visitor)
at System.Linq.Expressions.ExpressionVisitor.VisitUnary(UnaryExpression node)
at System.Linq.Expressions.UnaryExpression.Accept(ExpressionVisitor visitor)
at System.Linq.Expressions.ExpressionVisitor.VisitConditional(ConditionalExpression node)
at System.Linq.Expressions.ConditionalExpression.Accept(ExpressionVisitor visitor)
at System.Dynamic.Utils.ExpressionVisitorUtils.VisitBlockExpressions(ExpressionVisitor visitor, BlockExpression block)
at System.Linq.Expressions.ExpressionVisitor.VisitBlock(BlockExpression node)
at System.Linq.Expressions.BlockExpression.Accept(ExpressionVisitor visitor)
at HandlebarsDotNet.Compiler.FunctionBuilder.Compile(IEnumerable1 expressions, Expression parentContext, String templatePath) --- End of inner exception stack trace --- at HandlebarsDotNet.Compiler.FunctionBuilder.Compile(IEnumerable1 expressions, Expression parentContext, String templatePath)
at HandlebarsDotNet.Compiler.FunctionBuilder.Compile(IEnumerable1 expressions, String templatePath) --- End of inner exception stack trace --- at HandlebarsDotNet.Compiler.FunctionBuilder.Compile(IEnumerable1 expressions, String templatePath)
at HandlebarsDotNet.Handlebars.HandlebarsEnvironment.Compile(String template)

I hope someone has an idea, because I've already been searching quite some time.

@rexm
Copy link
Member

rexm commented Sep 27, 2018

A few others have reported encountering this exception, but I've been unable to reproduce it. Can you share your declaration of the lookup helper?

@Incahuazi
Copy link
Author

Hello rexm, Thank you for your reply!

In the documentation (https://handlebarsjs.com/builtin_helpers.html) I saw that the lookup helper was listed as a built-in helper, so I assumed it would work out of the box.

So probably that's my mistake and I will have a look at declaring it myself.

@rexm
Copy link
Member

rexm commented Sep 27, 2018 via email

@Incahuazi
Copy link
Author

Aah ok, that makes sense now.
Thanks for the clarification. I missed that I was looking at the js documentation :-)

Sorry for the confusion, and I'll close the issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants