security oroblem med reflection og UITypeEditor
HejJeg har en exe fil med følgende kode i:
Assembly assembly = Assembly.LoadFrom(textBox1.Text);
object _configurationClass = assembly.CreateInstance("ClassLibrary1.Class1");
propertyGrid1.SelectedObject = _configurationClass;
Og en dll med følgende i:
public class Class1
{
private string _test = "";
[EditorAttribute(typeof(AAA), typeof(System.Drawing.Design.UITypeEditor)),
CategoryAttribute(""),
DefaultValueAttribute(""),
DescriptionAttribute("test"),
BrowsableAttribute(true)]
public string Test
{
get
{
try
{
AAA.BBB = "ClassNameClassName";
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
return _test;
}
set { _test = value; }
}
public class AAA : UITypeEditor
{
public static string BBB = "";
public override object EditValue(ITypeDescriptorContext context, IServiceProvider sp, object value)
{
return BBB;
}
public override System.Drawing.Design.UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context)
{
return System.Drawing.Design.UITypeEditorEditStyle.Modal;
}
}
}
Dllens formål er at indeholde en klasse, hvis properties skal populere propertygriddet i main exe filen. Flere af propertiene skal have cursom editors, i dette eksempel er klassen AAA sådan en. Dllen ligger på en webserver og instantieres i exe filen igennem f.eks urlen http://localhost/Test/ClassLibrary1.dll.
Det virker fint på min maskine, men når jeg flytter exen og dllen til en anden maskine i et virtuelt directory kan jeg ikke få lov til at gøre det. Propertygriddet kommer simpelt hen til at indeholde "Request Failed." for propertien Test. Hvis jeg udkommenterer linien AAA.BBB = "SomeText"; virker det fint og hvis jeg referere til Assembliet med C:\Inetpub\wwwroot\Test\ClassLibrary1.dll virker det også fint. problemet har efter alt at dømme noget at gøre med permissions, men jeg ved ikke hvordan jeg skal give den lov til at gøre det jeg gerne vil. Begge filer er strong named og har "Enable ClickOnce Security Settings" slået til.
MVH
Justin Case
