Aplicativo .NET 4.0 no compartilhamento de rede causa SecurityException
Hoje, experimentei um problema estranho ao tentar depurar remotamente um aplicativo criado para o tempo de execução do .NET 4.0.
O aplicativo reside em um compartilhamento de rede e executado por uma máquina remota. No entanto, o aplicativo trava sempre durante o carregamento devido a uma SecurityException gerada por uma demanda de permissão no método System.Configuration.ConfigurationManager.GetSection (). Não verifiquei se outras demandas de permissão na biblioteca de classes base também causam uma exceção de segurança, mas em todos os casos isso não deveria estar acontecendo com o novo CLR.
O aplicativo está sendo executado em total confiança (verificado durante a depuração e, como de costume, isso sempre deve ser verdadeiro para aplicativos de intranet no CLR 4.0), por isso não sei como uma demanda de permissão pode causar uma exceção nesse caso. Quando criado no tempo de execução do 3.5 SP1 (que introduziu confiança total para aplicativos compartilhados em rede por padrão), tudo é executado conforme o esperado.
Colei o código de exemplo abaixo. Qualquer ajuda é muito apreciada.
using System;
using System.Configuration;
namespace ConsoleApplication1
{
public sealed class AssetsSection : ConfigurationSection
{
private static readonly ConfigurationProperty s_propPath;
private static readonly ConfigurationPropertyCollection s_properties;
static AssetsSection()
{
s_propPath = new ConfigurationProperty("path", typeof(String));
s_properties = new ConfigurationPropertyCollection()
{
s_propPath
};
}
public static AssetsSection Get()
{
return (AssetsSection) ConfigurationManager.GetSection("test/assets");
}
protected override ConfigurationPropertyCollection Properties
{
get
{
return s_properties;
}
}
public String Path
{
get
{
return (String) base[s_propPath];
}
set
{
base[s_propPath] = value;
}
}
}
class Program
{
static void Main(String[] args)
{
Console.WriteLine(AssetsSection.Get().Path);
Console.ReadLine();
}
}
}
E o arquivo App.config;
<?xml version="1.0"?>
<configuration>
<configSections>
<sectionGroup name="test">
<section name="assets" type="ConsoleApplication1.AssetsSection, ConsoleApplication1"/>
</sectionGroup>
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client"/>
</startup>
<test>
<assets path="..\Assets"/>
</test>
</configuration>