Pokud vám stačí jen čisté Médium Trust, tak v souboru
c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG\web.config
změňte v uzlu trust atribut level na požadované.
<system.web>
<securityPolicy>
<trustLevel name="Full" policyFile="internal" />
<trustLevel name="High" policyFile="web_hightrust.config" />
<trustLevel name="Medium" policyFile="web_mediumtrust.config" />
<trustLevel name="Low" policyFile="web_lowtrust.config" />
<trustLevel name="Minimal" policyFile="web_minimaltrust.config" />
</securityPolicy>
<trust level="Medium" originUrl="" />
</system.web>
Sranda začíná pokud chcete toto nastavení rozšířit. V tom případě je lepší než rozšiřovat standardní úrovně založit novou. Jako základ použijeme některý ze souborů, pro medium trust web_mediumtrust.config a uložíme pod zvoleným jménem, a rozšíříme o něj uvedený seznam.
Nyní musíme zeditovat nově vytvořený soubor. Nejčastější operací je přístup k adresáři mimo prostor.
Do sekce NamedPermissionSets přidáme např. něco takového:
<IPermission
class="FileIOPermission"
version="1"
Read="$AppDir$/../data;$AppDir$"
Write="$AppDir$/../data;$AppDir$"
Append="$AppDir$/../data;$AppDir$"
PathDiscovery="$AppDir$/../data;$AppDir$"
/>
To umožní zápis do adresáře data na stejné úrovni jako je aplikace.
Druhou častou věcí je např. povolení OleDb:
Do sekce SecurityClasses se přidá
<SecurityClass Name="OleDbPermission"
Description="System.Data.OleDb.OleDbPermission,
System.Data, Version=2.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089"/>
a do výše uvedené sekce NamedPermissionSets pak můžeme přidat
<IPermission class="OleDbPermission"
version="1"
Unrestricted="true"/>
Obdobně postupujeme i v jiných případech.
Co je zakázáno v medium trust?
- OleDbPermission (ale ne SqlClientPermission)
- EventLogPermission
- ReflectionPermission (nelze používat reflection)
- RegistryPermission (nelze používat registry)
- WebPermission je omezené, to znamená, že aplikace může komunikovat pouze v definovaném rozsahu adres (element <trust>)
- FileIOPermission je omezené, povolen pouze přístup k souborům uvnitř virtual directory