Brzi popravak za Medium Trust
1. Preimenujte Web.config datoteku u Web.fulltrust.config
2. Preimenujte Web.mediumtrust.config u Web.config
3. Izbrišite DotNetOpenId.dll iz /bin folder-a
4. Posjetite i provjerite vašu /Setup/Default.aspx stranicu na kojoj bi trebala pisati postavka koju trebate dodati za uređaj pretraživanja da bi se pozabavili pitanjem Medium Trust-a.
Ako i nakon gore opisanih koraka i dalje dobivate SecurityException sa "System.Configuration.ConfigurationPermission", vjerojatno se radi o tome da ASP.NET AJAX ekstenzije nisu instalirane u GAC-u (Global Assembly Cache) na serveru. Mi uključujemo AJAX dll System.Web.Extensions.dll u bin folderu iz čega se može pokrenuti u Full Trust-u, no za Medium Trust ga host mora instalirati u GAC-u na serveru, koristeći ASPAJAXExtSetup.msi, što je ASP.NET 2.0 AJAX 1.0 instaler. Ako je AJAX instaliran u GAC-u, upotrijebit će tu datoteku i ignorirati onu u bin folderu, tako da možete sigurno izbrisati onu u bin folderu.
To će pokrenuti program u većini slučajeva. Ako želite naučiti više o pitanjima Trust Levela-a, nastavite čitati dalje.
Po svojoj prilici je dobra stvar što sve više i više hosting providera forsira medium trust politiku na .NET web apps koje koriste njihovi serveri. To postavlja izazove za razvoj nekih značajki koje trebaju dopuštenje za obavljanje radnji da bi podržali njihov set obilježja, no uz kooperaciju hosting kompanija obično još uvijek možemo dobiti potpunu funkcionalnost, ako su oni voljni instalirati biblioteke s povjerenjem GAC-a.
Dobar primjer ma mojoPortal-u je upotreba NeatUpload-a. NeatUpload (kao svi ASP.NET uploadi komponenti) treba UnmanagedCode SecurityPermission za pristup važećem HttpWorkerRequest-u, no ako se instalira u GAC-u može tražiti ovo dopuštenje. Također ćete trebati instalirati i app_data\NeatUpload_Temp u vašem app rootu i učiniti ga upisnim, ili jasno odredite drugi direktorij koristeći tempDirectory svojstvo za NeatUpload element.
Da bi konfigurirali rad mojoPortal-a u Medium trust-u imate na raspolaganju nekoliko ishoda i opcija koje možete uzeti u obzir.
Najbolje je ako možete preko vašeg hosta instalirati NeatUpload, no to može biti onemogućeno izostavljajući komentar za sve reference na Web.config datoteci, što će rezultirati normalnom funkcionalnošću uploada. Ako je NeatUpload u GAC-u, potrebno vam je nekoliko drugih web.config postavki. One su komentirane u Web.config datoteci sa uputama. Testirali smo sljedeću verziju NeatUpload-a u GAC-u i radi u Medium Trust-u. Možete downloadati tu verziju ovdje, ili posjetiti NeatUpload site za provjeru novije verzije. Htjet ćete kompiliranu verziju, označenu pouzdanim imenom ključa tako da se može instalirati u GAC-u (Global Assembly Cache) zbog čega ga trebate downloadati sa NeatUplaod stranice. Verzija uključena u mojoPortal nije označena i zato se ne može instalirati u GAC-u.
Nećete moći koristiti treću stranu WebParts u Medium Trust-u osim ako su i oni instalirani u GAC-u. Zasad ne znamo ni jedan slučaj treće strane ASP.NET WebParts na divlje (in the wild). Sve što se vidi je Sharpoint "WebParts" što nisu iste stvari. Dakle to nije neki veliki učinak.
MS SQL ADO.NET Provider je obično već dostupan u GAC-u. MySQL Connector ili npgsql driver za PostgreSQL se također moraju instalirati u GAC-u da bi radili. Trebat ćete skinuti verziju označenu imenom ključa sa MySQL stranice ovdje:
http://dev.mysql.com/downloads/connector/net/1.0.html ili sa korištenjem PostgreSQL-a, npgsql driver odavdje: http://pgfoundry.org/projects/npgsql zato što verzije uključene sa mojoPortal-om nisu označene sa pouzdanim imenom ključa (strong name key) zbog čega ne mogu biti instalirane u GAC-u.
U Medium trust-u također postoji posebna Web.config postavka potrebna za Lucene.Net Search engine (pretraživača) koju koristi stranica. Morate oduzeti komentar ovu postavku u web.config-u
add key="Lucene.Net.lockdir" value="c:\__joe\mojodev\Web\Data\Sites\1\index"
i za vrijednost unesite fizički put (physical path) koji se preslikava u Web/Data/Sites/1/indeks mapu ispod vaše web stranice.
U Medium trust instalaciji najbolje je ne pokrenuti multiple stranice sa jedne instalacije mojoPortal-a, jer ova značajka pretraživanja neće biti specifična za stranicu i može se dogoditi da ne radi.
Još jedna stvar na koju morate pripaziti kada pokrećete mojoPortal sa Medium trust-om tiče se skinninga. Iz razloga što mojoPortal može podržavati multiple web stranice koristeći jednostruku instalaciju (premda ne pod Medium trust-om) mi čuvamo skin datoteke na stranici u posebnoj mapi pod Data/Sites[SiteID]/skins/ kako bi ih držali odvojeno između različitih stranica koje mogu raditi. Kako bi to postigli koristimo uobičajeni
VirtualPathProvider koji usmjerava zahtjeve za theme.skin datoteku na tu lokaciju iako vrijeme pokretanja (runtime) "misli" da dobiva ovu datoteku iz App_Themes/Default. VirtualPathProvider će elegantno podbaciti ako postoji sigurnosno isključenje uzrokovano Medium trust-om, no trebat ćete kopirati vašu theme.skin datoteku sa skina koji želite upotrijebiti u mapu App_Themes/Default. Zbog toga će biti malo nespretno mjenjati skinove, no to je potrebno pod Medium trust-om.
Još jedna značajka koja ne radi u Medium trust-u je Open ID provjera autentičnosti. Ako je vaša stranica hostana u Medium trust-u, trebate postaviti EnableOpenIDAuthentication = false in Web.config i izbrisati Janrain.OpenId.dll iz bin foldera. Također ćete trebati otvoriti /Secure/Login.aspx stranicu sa uređivačem teksta i izrezati ovaj dio:
<portal:OpenIDLoginControl id="oidLogin" runat="server"></portal:OpenIDLoginControl>
Vezani izvori programera:
Korištenje zaštićenosti pristupnog koda u ASP.NET-u
Kako koristiti pristupne kodove za sigurnost te ograničiti spajanje
Omogućavanje WebPermission u Medium Trust-u
Medium Trust ASP.NET aplikacije