2010. december havi bejegyzések

IIS beállítások öröklése, de honnan?

Az IIS beállítások öröklése nagyon praktikus szolgáltatás, de a gyakorlatban hasonlóan meg tudja viccelni az üzemeltetőket, mint az NTFS jogosultságok öröklése. Nemrég például egy webalkalmazás beállításait kellett módosítanom, ezért kiválasztottam az adott mappát az IIS Manager bal oldali fájában:

IIS_Manager_Connections

A jobb oldali panelen pedig kiválasztottam az IPv4 Address and Domain Restrictions modult és máris az alábbi kép tárolt elém:

IIS_Manager_IP_restrictions

Természetesen egy olyan beállítást kellett volna módosítanom, ami mellett az szerepelt, hogy Inherited, azaz öröklött. Jó, ha öröklött, hát legyen öröklött, de azért mégis csak jó lenne tudni, hogy honnan? Természetesen a szülőtől. Ezért elkezdtem az IIS Managerben felfelé mászni a fában és minden szinten megnéztem a jobb oldalon ugyanezt a modult. Először a mappa szintjén, aztán a webhely szintjén, majd végül szerver szintjén, és láss csodát: sehol semmi! Hogy lehet, hogy lefolyik egy beállítás, de felső szinten mégsem találom?

Hát úgy, hogy az IIS Manager füllent, nem is kicsit. A jobb oldali panelen azok a beállítások látszódnak, amik az adott szintre vonatkoznak, nem pedig azok, amiket ott teszünk meg. Ezért látok egy öröklött beállítást egy alsóbb szinten is, mert az ott érvényesül. Többnyire persze felsőbb szinten is látszik, mert arra a szülő csomópontra és az összes gyerekére vonatkozik. Csakhogy felsőbb szinten bármelyik .config fájlban meg lehet mondani, hogy egy adott beállítás nem az aktuális szintre, hanem valamelyik alsóbb szintre vonatkozik, adott esetben éppen az applicationHost.config fájlban így:

<location path="AaitPortal/Accounts">
  <system.webServer>
    <security>
      <ipSecurity allowUnlisted="false">
        <add ipAddress="127.0.0.1" allowed="true" />
        <add ipAddress="152.xxx.yyy.zzz"
          subnetMask="255.255.252.0" allowed="true" />
      </ipSecurity>
    </security>
  </system.webServer>
</location>

Így van, az a bizonyos location elem. Mivel ez csak az AaitPortal/Accounts mappára vonatkozik, ezért csak ott fog megjelenni ez a beállítás, és mivel az applicationHost.config fájltól száll lefelé, ezért nyilvánvalóan inherited.

Na de akkor hol lehet átállítani?

Persze ha nekiesek közvetlenül a konfig fájlnak, akkor nincs probléma. De ha éppen távolról állítgatom a szervert, akkor nincs már lehetőség, mint az IIS Manager. Szerencsére ott is van megoldás, úgy hívják hogy Configuration Editor (katt a nagyobb képért):

IIS_Manager_Configuration_Editor

Nekem az a szimpatikus ebben a modulban, hogy sokkal alacsonyabb szinten mutatja, hogy milyen beállítások vannak, így például olyan opciókat is meg tud mutatni, amik az IIS Manager funkció specifikus GUI-jára ki sincsenek vezetve. Sőt, a From mezőben azt is megmondhatom, hogy egy beállítást melyik szinten lévő konfigurációs fájlba szeretnék beírni.

A másik nagyon remek dolog a jobb oldali panelen található Search Configuration opció (katt a nagyobb képért):

IIS_Manager_Configuration_Search

Egyrészt itt tényleg van keresési lehetőség, másrészt közvetlenül látszik az öröklési lánc és hogy hol mi van beállítva. Tehát nem az, hogy mire vonatkozik, hanem hogy azon a szinten pontosan mi van a konfig fájlban!

Ha nagyon nem találok egy beállítást, akkor előbb-utóbb mindig itt kötök ki, mert a keresés és a szűrt megjelenítés mindent azonnal átláthatóvá tesz.

Jó keresgélést!

 

Karácsonyi és újévi programajánló

A karácsonyi ingerszegény időszak kitöltésére ideális mozi program lehet a december 2-án rendezett Silverlight Firestarter 2010 esemény anyagainak végignézése, amit a Microsoft nemrég tett elérhetővé a http://www.silverlight.net/news/events/firestarter/ címen. Nyolc érdekes előadás Scott Guthrie csapatával, melyekből a Silverlight 5 újdonságairól is képet kaphatunk.

A jövő év elején pedig a web és a WebMatrix kedvelőknek nyújt lehetőséget a technológia megismerésére a január 13-án Ohio-ban rendezett CodeMash esemény, melynek előadásait online is követhetjük a http://web.ms/enter címen.

Jó tévézést!

Technorati-címkék: ,,,

Msg 8115 Arithmetic overflow error

Ha a webalkalmazásunkba feltöltött fájlokról SQL táblában tárolunk meta információkat, akkor általában a fájl méretét tároló oszlopnál beérjük a klasszikus int adattípussal. Az int T-SQL-ben 4 bájtos, tehát nagyjából 2 GB-os fájlok leírására lesz így képes az alkalmazásunk, ennél nagyobbat nem szoktak feltölteni a felhasználók. Ha jól megy az webhely és a felhasználók töltögetnek rendesen, akkor egy idő után azonban könnyen belefuthatunk ebbe a hibaüzenetbe:

  Msg 8115, Level 16, State 2, Line 12
  Arithmetic overflow error converting expression to data type int.

Az egészben az az érdekes, hogy egy olyan utasításról van szó, ami korábban működött, most viszont elröppen. A hibaüzenetben a kulcsszó az overflow, azaz kiléptünk az int határaiból. Ez hogyan fordulhat elő? Például úgy, hogy a kódban van egy ehhez hasonló utasítás:

  SELECT Sum(FileSize) FROM...

Ez egészen addig nem fog gondot okozni, amíg az összes fájl együttes mérete el nem éri a 2GB-ot. Tehát nem egy fájl a gond, hanem az összes együtt! A Sumot ugyanis ha inttel etetjük, akkor intet is akar kiköpni magából, de ha az eredmény nem fér bele az int értéktartományába, hanem megakad a torkán.

A megoldás nagyon egyszerű, durvuljunk:

  SELECT SUM(CAST(FileSize AS bigint)) FROM...

Csak az a kár, hogy előre kellene gondolni rá…

Technorati-címkék: ,

Web Deployment Projects fordítása Visual Studio nélkül

Nagyon kedvemre való az ASP.NET 2.0-ban megjelent Web Site projekt típus, elsősorban az egyszerűsége miatt. Sajnos van néhány hátránya is, amiből néhány az eltelt sok év alatt sem oldódott meg, másokra azonban van már jól használható megoldás. Ez utóbbiak közé tartozik a a projekt fordítása, azaz hogy a szerverre ne a nyers forráskódot kelljen feltennünk – és ezzel az ASP.NET runtime-ra bíznunk a fordítást – , hanem csak a lefordított DLL-eket és a kiürített ASPX fájlokat. Ezt a problémát tökéletesen megoldja a Web Deployment Projects (WDP) kiegészítés. Ezzel viszont az a bökkenő, hogy csak a nagy Visual Studiot támogatja, Visual Web Developer Expressre nem tudjuk telepíteni. Ha tehát van egy VS alatt készült projektünk, aminek a fordítását, CSS és Javascript minimalizálását, sőt az egész telepítő csomag összerakását a WDP végzi, akkor nem tudunk telepítőt gyártani az Express verzión, hiszen az nem tudja betölteni a WDP projekt típust. Szerencsére van megoldás.

Az a szerencsénk, hogy csak a dizájner támogatással van probléma, parancssorból le lehet fordítani az egész solutiont, DLL függőségekkel és WDP-vel együtt. Első lépésként tehát telepítsük fel a VWD Express mellé a WDP-et és fütyüljünk rá, hogy a kettő szóba se áll egymással. A lényeg, hogy a WDP telepítőjével az MSBuild taskok felkerültek a gépre.

A WDP projekt konfigurációjától függően valószínűleg kelleni fog még az aspnet_merge.exe, amit megtalálhatunk a nagy Visual Studios gépen vagy esetleg a Windows SDK-ban. Ezt egyszerűen másoljuk be a %ProgramFiles%\MSBuild\Microsoft\WebDeployment\v10.0 mappába.

Ha ez mind megvan, már indulhat is a teljes solution fordítása parancssorból:

"%WinDir%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe"
  /target:Build
  /property:Configuration=Release
  MySolution.sln 
  /p:AspNetConfiguration=Release 

Fontos, hogy négyes MSBuildre van szükségünk, még akkor is, ha egyébként a projekt a 3.5-ös Framework verziót célozza meg.

VS 2010 SP1 vs ASP.NET MVC 3 RC

Jason Zanders blogjában megjelent az első hír a Visual Studio 2010 Service Pack 1 bétájáról, amit az MSDN előfizetők már le is tölthetnek, a nyilvános letöltés pedig csütörtöktől lesz elérhető.

Aki használja az ASP.NET MVC 3 Release Candidate változatát, annak nem célszerű telepítenie a fejlesztőkörnyezet javítócsomagjának ezt a béta verzióját, mert a két termék félkész változatai ugyan vígan feltelepülnek egymásra, azonban csöndesen kivégzik egymás funkcióit (pl. IntelliSense). Aki tehát már MVC 3-mal dolgozik, annak egyelőre célszerű várni az SP1 telepítésével, na szerencsére nem sokáig, pár napon belül jön egy újabb előzetes az MVC-ből, ami már kompatibilis lesz az SP1-gyel.

ui. Igazi kocka címet sikerült adni ennek a posztnak Mosolygó arc

Technorati-címkék: ,

Daily WTF: belépés jelszó nélkül by design

Az imént regisztráltam egy weboldalra, ahonnan megjött a szokásos – teljesen felesleges – köszhogyregisztráltál levél. Azt hittem, ma már senki nem teszi ezekbe a levelekbe a felhasználónevet ÉS a jelszót egyszerre. Hát ők igen (na jó, nem ők az egyetlenek). Sőt még azt is beleírják, hogyan lehet jelszó nélkül belépni az én profilomba bárkinek, bárhonnan!

Belépés jelszó nélkül

Mesélhetek én arról, hogy ne legyen Emlékezz Rám funkció az oldalon, mert növeli a Cross Site Request Forgery támadások esélyét, vagy hogy védekezzünk a Session Fixation ellen… Az igazán szomorú, hogy ez egy informatikai témájú weboldal egy beépített, tervezett, támogatott funkciója, mi lehet bent vagy mi lehet máshol?

(ps. A fenti levél közepét kivágtam.)

Technorati-címkék: ,