I am using RazorEngine. I have dynamic templates that I will associate with the view model at runtime. My requirement is to run the code in the sandbox. Thus, only bindings are allowed. RazorEngine allows me to run code in an arbitrary application domain using
using (var service = new IsolatedTemplateService(() => appDomain))
{
return service.Parse(newTemplate, model, null, null);
}
If I run the application domain with the following permission, it will work,
var permissionSet = new PermissionSet(PermissionState.Unrestricted);
But if I ran it using these permissions,
var permissionSet = new PermissionSet(PermissionState.None);
permissionSet.AddPermission(new SecurityPermission(PermissionState.Unrestricted));
permissionSet.AddPermission(new ReflectionPermission(PermissionState.Unrestricted));
I will get,
[SecurityException: Request failed.]
System.AppDomain.CreateInstance(String assemblyName, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes) +0
RazorEngine.Templating.IsolatedTemplateService..ctor(Language language, Encoding encoding, IAppDomainFactory appDomainFactory) +408
RazorEngine.Templating.IsolatedTemplateService..ctor(Language language, Encoding encoding, Func`1 appDomainFactory) +73
RazorEngine.Templating.IsolatedTemplateService..ctor(Func`1 appDomainFactory) +41
Is there any special permission I need to grant?
source
share