在我的應用程序中,我創建了沙箱域,我需要動態定義綁定重定向規則。但是我無法使用SetConfigurationBytes方法傳遞ConfigurationFile設置和原始xml數據。如何獲取AppDomainSetup.SetConfigurationBytes()的工作?
我創建了一個樣品,以檢查是否配置數據被施加到子域:
var configData =
@"<?xml version='1.0' encoding='utf-8' ?>
<configuration>
<appSettings>
<add key='MyData' value='CUSTOM'/>
</appSettings>
</configuration>";
var setup = new AppDomainSetup {
ApplicationBase = runtimeAssembliesPath // ,ConfigurationFile = configFilePath
};
setup.SetConfigurationBytes(Encoding.UTF8.GetBytes(configData));
var sandbox = AppDomain.CreateDomain("Sandbox", evidence, setup);
var verifier = (Sample)_sandbox.CreateInstanceAndUnwrap(thisAssemblyName, typeof(Sample).FullName);
verifier.DebugPrint();
其中驗證爲被一個方法純類:
public class Sample: MarshalByRefObject
{
public void DebugPrint()
{
Debug.WriteLine("=====================================");
Debug.Print("Reading config: =====|{0}|=====", ConfigurationManager.AppSettings["MyData"]);
Debug.WriteLine("=====================================");
}
}
更新 第一個問題與上面的代碼是它必須從MarshalByRefObject繼承,以將調用打印調用編組到子appdomain,而不是在當前域中創建的副本上進行調用(感謝sthotakura)。 因此ConfigurationFile設置開始工作。但是仍然沒有運用SetConfigurationBytes。無論如何,目標是定義bindingRules,如果通過SetConfigurationBytes傳遞的話,它會起作用。
良好的漁獲!我只是詢問SetConfigurationBytes()。 – olegz
@olegz好了,要更換新的AppDomain的配置位,如反對新appdomaiin提供了一個新的配置? – sthotakura
@olegz看起來像任何通過SetConfigurationBytes傳遞越來越在你原來的問題忽略:( – sthotakura