Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a cikk a .NET-keretrendszer 3.5 Service Pack 1-es és 4-es verziójának migrálási problémáit ismerteti, beleértve a javításokat, a szabványoknak való megfelelés és a biztonság változásait, valamint az ügyfelek visszajelzései alapján végzett módosításokat. A módosítások többsége nem igényel programozási módosításokat az alkalmazásokban. Azok esetében, amelyek módosításokat is érinthetnek, tekintse meg a tábla Javasolt módosítások oszlopát. A jelentős módosítások terület szerint vannak lebontva, például ASP.NET és Windows Presentation Foundation (WPF).
A cikkben szereplő problémák magasabb szintű áttekintését a .NET-keretrendszer 4 migrálási útmutatójában találja.
Az új funkciókról további információt a .NET-keretrendszer 4 újdonságai című témakörben talál.
ASP.NET és web
Névterek: System.Web, System.Web.Mobile, System.Web.Security, System.Web.UI.WebControls
Szerelvény: System.Web (System.Web.dll)
| Tulajdonság | Különbségek a 3,5 SP1-től | Javasolt módosítások |
|---|---|---|
| Böngésződefiníciós fájlok | A böngésződefiníciós fájlok úgy lettek frissítve, hogy az új és frissített böngészőkkel és eszközökkel kapcsolatos információkat tartalmazzanak. A régebbi böngészők és eszközök, például a Netscape Navigator el lettek távolítva, és újabb böngészők és eszközök, például a Google Chrome és az Apple iPhone lettek hozzáadva. Ha az alkalmazás olyan egyéni böngésződefiníciókat tartalmaz, amelyek az eltávolított böngésződefiníciók egyikétől öröklődnek, hibaüzenet jelenik meg. Az HttpBrowserCapabilities objektumot (amelyet az oldal tulajdonsága Request.Browse fed le) a böngésződefiníciós fájlok vezérlik. Ezért a 4. ASP.NET objektum egy tulajdonságának elérésével visszaadott információk eltérhetnek az ASP.NET egy korábbi verziójában visszaadott adatoktól. |
Ha az alkalmazás a régi böngésződefiníciós fájlokra támaszkodik, a következő mappából másolhatja őket: Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\Browsers Másolja a fájlokat a megfelelő \CONFIG\Browsers mappába a ASP.NET 4-hez. A fájlok másolása után futtassa a Aspnet_regbrowsers.exe parancssori eszközt. További információkért tekintse meg a https://www.asp.net/mobile webhelyet. |
| A ASP.NET vegyes verzióiban futó gyermekalkalmazások | ASP.NET 4 alkalmazások, amelyek az ASP.NET korábbi verzióit futtató alkalmazások alárendeltjeiként vannak konfigurálva, nem biztos, hogy elindulnak konfigurációs vagy összeállítási hibák miatt. A konkrét hiba attól függ, hogy az alkalmazás az IIS 6.0, vagy az IIS 7 vagy az IIS 7.5 alatt fut-e. | Módosíthatja az érintett alkalmazások konfigurációs fájljait, hogy a konfigurációs rendszer megfelelően felismerje a ASP.NET 4 alkalmazást. A szükséges módosításokkal kapcsolatos információkért tekintse meg az "ASP.NET 4 gyermekalkalmazások nem indulnak el, amikor ASP.NET 2.0 vagy ASP.NET 3.5 alkalmazások alatt futnak" című szakaszt az ASP.NET 4 kompatibilitástörő módosítások dokumentumban az ASP.NET webhelyen. |
| ClientID-módosítások | A 4. ASP.NET új clientIDMode beállításával megadhatja, hogy ASP.NET hogyan hozza létre a id HTML-elemek attribútumát. A ASP.NET korábbi verzióiban az alapértelmezett viselkedés egyenértékű volt a AutoID beállítással clientIDMode. Az alapértelmezett beállítás most Predictable. További információ: ASP.NET webkiszolgáló-vezérlőazonosítás. |
Ha a Visual Studio használatával frissíti az alkalmazást a ASP.NET 2.0-s vagy ASP.NET 3.5-ös verziójáról, az eszköz automatikusan hozzáad egy beállítást a Web.config fájlhoz, amely megőrzi a .NET-keretrendszer korábbi verzióinak viselkedését. Ha azonban úgy frissít egy alkalmazást, hogy az IIS-ben az alkalmazáskészletet a .NET-keretrendszer 4-re módosítja, ASP.NET alapértelmezés szerint az új módot használja. Az új ügyfél-azonosító mód letiltásához adja hozzá a következő beállítást a Web.config fájlhoz:<pages clientIDMode="AutoID" /> |
| Kódhozzáférés biztonsága (CAS) | ASP.NET ASP.NET 3.5-ben hozzáadott 2.0 NET-funkciók a .NET Framework 1.1 és a .NET Framework 2.0 kódelérési biztonsági (CAS) modellt használják. A CAS ASP.NET 4-ben történő implementálását azonban jelentősen átdolgozták. Ennek eredményeképpen a részleges bizalommal rendelkező ASP.NET alkalmazások, amelyek a globális szerelvénygyorsítótárban futó megbízható kódra támaszkodnak, különböző biztonsági kivételekkel meghiúsulhatnak. A gép CAS-szabályzatának széles körű módosítására támaszkodó részleges megbízhatósági alkalmazások szintén meghiúsulhatnak, és biztonsági kivételeket vethetnek ki. | A részleges megbízhatósági ASP.NET 4 alkalmazást visszaállíthatja az 1.1-es és a 2.0-s ASP.NET viselkedésére a legacyCasModel konfigurációs elem új trust attribútumának használatával, ahogyan az a következő példában látható:<trust level= "Medium" legacyCasModel="true" />Fontos: A régebbi CAS-modellre való visszaállítás csökkentheti a biztonságot. Az új ASP.NET 4 kódelérési biztonsági modellről további információt a Code Access Security ASP.NET 4-alkalmazásokban talál. |
| Konfigurációs fájlok | A .NET-keretrendszer és az ASP.NET 4 gyökérkonfigurációs fájljai (a machine.config fájl és a gyökér Web.config fájl) frissültek, hogy tartalmazzák az alkalmazás Web.config fájlokban az ASP.NET 3.5-os verzióban található legtöbb alapértelmezett konfigurációs információt. A felügyelt IIS 7 és IIS 7.5 konfigurációs rendszerek összetettsége miatt ASP.NET 3.5-ös alkalmazások futtatása a 4. ASP.NET alatt és az IIS 7 és az IIS 7.5 alatt ASP.NET vagy IIS-hibákat eredményezhet. | Frissítse az ASP.NET 3.5-ös alkalmazásokat ASP.NET 4-re a Visual Studio projektfrissítési eszközeinek használatával. A Visual Studio 2010 automatikusan módosítja a ASP.NET 3.5 alkalmazás Web.config fájlját, hogy tartalmazza a ASP.NET 4 megfelelő beállításait. A .NET-keretrendszer 4 használatával azonban újrafordítás nélkül futtathat ASP.NET 3.5-ös alkalmazásokat. Ebben az esetben előfordulhat, hogy manuálisan kell módosítania az alkalmazás Web.config fájlját, mielőtt futtatja az alkalmazást a .NET-keretrendszer 4-ben, illetve az IIS 7 vagy az IIS 7.5 alatt. A szükséges módosítás a szoftver kombinációjától függ, beleértve a Szervizcsomag (SP) kiadásokat is. A módosítás által érintett lehetséges szoftverkombinációkról és az adott kombinációkkal kapcsolatos problémák megoldásáról a ASP.NET webhelyen ASP.NET 4 kompatibilitástörő módosítást ismertető dokumentumban található "Az új ASP.NET 4 gyökérkonfigurációhoz kapcsolódó konfigurációs hibák" című szakaszban talál további információt. |
| Vezérlő renderelése | A ASP.NET korábbi verzióiban bizonyos vezérlők olyan korrektúrát bocsátottak ki, amelyeket nem sikerült letiltani. Alapértelmezés szerint ez a típusú jelölés már nem jön létre az ASP.NET 4-ben. A megjelenítési módosítások a következő vezérlőket érintik:Image és ImageButton vezérlők már nem jelenítenek meg border="0" attribútumot.* Az BaseValidator abból származó osztály- és érvényesítési vezérlők alapértelmezés szerint nem jelenítik meg a piros szöveget.* A HtmlForm vezérlő nem jelenít meg attribútumot name .* A Table vezérlő már nem jelenít meg attribútumot border="0" .A nem felhasználói bemenetre (például a Label vezérlőre) tervezett vezérlők már nem jelenítik meg az disabled="disabled" attribútumot, ha a tulajdonságuk Enabled be van állítva false (vagy ha ezt a beállítást egy tárolóvezérlőtől öröklik). |
Ha a Visual Studio használatával frissíti az alkalmazást a ASP.NET 2.0-s vagy ASP.NET 3.5-ös verziójáról, az eszköz automatikusan hozzáad egy beállítást a Web.config fájlhoz, amely megőrzi az örökölt renderelést. Ha azonban úgy frissít egy alkalmazást, hogy az IIS-ben az alkalmazáskészletet a .NET-keretrendszer 4-re módosítja, ASP.NET alapértelmezés szerint az új renderelési módot használja. Az új megjelenítési mód letiltásához adja hozzá a következő beállítást a Web.config fájlhoz:<pages controlRenderingCompatibilityVersion="3.5" /> |
| Eseménykezelők az alapértelmezett dokumentumokban | ASP.NET 4 üres sztringként jeleníti meg a HTML form elem action attribútumértékét, amikor egy olyan bővítmény nélküli URL-re történik kérés, amelyhez alapértelmezett dokumentum van hozzárendelve. Az ASP.NET korábbi kiadásaiban a http://contoso.com kérés a Default.aspx kérését eredményezte. Ebben a dokumentumban a nyitó form címke az alábbi példához hasonlóan jelenik meg:<form action="Default.aspx" />Az ASP.NET 4-ben egy http://contoso.com kérelem egyben egy Default.aspx kérelemként is működik, de most az ASP.NET a HTML-nyitó form címkét úgy jeleníti meg, ahogy az az alábbi példában látható.<form action="" />Ha az action attribútum egy üres sztring, az IIS DefaultDocumentModule objektum létrehoz egy új kérelmet Default.aspx-re. A legtöbb feltétel esetén ez a gyermekkérelm transzparens az alkalmazáskód számára, és a Default.aspx oldal normál módon fut. A felügyelt kód és az IIS 7 vagy az IIS 7.5 integrált mód közötti lehetséges interakció azonban azt okozhatja, hogy a felügyelt .aspx lapok nem működnek megfelelően a gyermekkérés során. Ha a következő feltételek teljesülnek, a gyermek egy alapértelmezett .aspx dokumentumra irányuló kérése hibát vagy váratlan viselkedést eredményez:* Egy .aspx lap kerül a böngészőbe továbbításra a form elem action attribútumával, amely "" van megadva.* Az űrlap visszaküldésre kerül az ASP.NET-hez. * A felügyelt HTTP-modul beolvassa az entitás törzsének egy részét, például Request.Form vagy Request.Params. Ez azt eredményezi, hogy a POST-kérelem entitástörzse beolvasásra kerül a felügyelt memóriába. Ennek eredményeképpen az entitás törzse már nem érhető el az IIS 7 vagy az IIS 7.5 integrált módban futó natív kódmodulok számára.* Az IIS-objektum DefaultDocumentModule végül lefut, és létrehoz egy gyermekkérelmet a Default.aspx dokumentumhoz. Mivel azonban az entitás törzsét már beolvasta egy felügyelt kódrészlet, nincs elérhető entitástörzs, amely elküldhető a gyermekkérelemhez.* Amikor a HTTP-folyamat a gyermekkérelemhez fut, a .aspx fájlok kezelője a kezelő végrehajtási fázisában fut. Mivel nincs entitástörzs, nincsenek űrlapváltozók és nincs nézetállapot. Ezért a .aspx lapkezelő nem tudja meghatározni, hogy milyen eseményt (ha van ilyen) kell létrehozni. Ennek eredményeképpen az érintett .aspx lap futtatásához tartozó postback eseménykezelők egyike sem fut. |
A módosítás következtében felmerülő problémák megkerülésének módjairól az ASP.NET webhelyen, az ASP.NET 4 Funkcióváltozások című dokumentumban talál további információt: "Előfordulhat, hogy az eseménykezelők nem feltétlenül futnak le alapértelmezett dokumentumban az IIS 7 vagy az IIS 7.5 integrált módban". |
| Kivonatoló algoritmus | ASP.NET titkosítási és kivonatolási algoritmusokat is használ az olyan adatok biztonságossá tételéhez, mint az űrlaphitelesítési cookie-k és az állapot megtekintése. Alapértelmezés szerint a ASP.NET 4 az algoritmust használja a HMACSHA256 cookie-k kivonatolási műveleteihez és a megtekintési állapothoz. A ASP.NET korábbi verziói a régebbi HMACSHA1 algoritmust használták. | Ha olyan alkalmazásokat futtat, amelyek ASP.NET 2.0-s és ASP.NET 4-et kevernek, ahol az adatoknak, például az űrlaphitelesítési cookie-knak a .NET-keretrendszer verzióiban kell működnie, konfiguráljon egy ASP.NET 4-webalkalmazást a régebbi HMACSHA1 algoritmus használatára az alábbi beállítás hozzáadásával a Web.config fájlban:<machineKey validation="SHA1" /> |
| Üzemeltetési vezérlők az Internet Explorerben | A Windows Forms-vezérlők már nem üzemeltethetők az Internet Explorerben, mert jobb megoldások érhetők el a webes vezérlők üzemeltetésére. Ezért a IEHost.dll és IEExec.exe szerelvények el lettek távolítva a .NET-keretrendszerből. | A webalkalmazások egyéni vezérlésének fejlesztéséhez az alábbi technológiákat használhatja: * Létrehozhat egy Silverlight-alkalmazást, és konfigurálhatja úgy, hogy a böngészőn kívül fusson. További információ: Böngészőn kívüli támogatás. * Létrehozhat egy XAML böngészőalkalmazást (XBAP) a WPF képességeinek kihasználásához (az ügyfélgépeken a .NET-keretrendszer szükséges). További információ: WPF XAML böngészőalkalmazások áttekintése. |
| HtmlEncode és UrlEncode metódusok | A HtmlEncode és UrlEncode osztályok HttpUtility és HttpServerUtility módszereit frissítettük, hogy az idézőjel karaktert (') a következőképpen kódolják:* A HtmlEncode metódus az egyetlen idézőjel példányait a következőként kódolja: '* A UrlEncode metódus az egyetlen idézőjel példányait a következőként kódolja: %27 |
Vizsgálja meg a kódot olyan helyeken, ahol használja a HtmlEncode metódusokat, UrlEncode és győződjön meg arról, hogy a kódolás módosítása nem eredményez olyan változást, amely hatással lenne az alkalmazásra. |
| HttpException hibák ASP.NET 2.0-s alkalmazásokban | Miután ASP.NET 4 engedélyezve lett az IIS 6-on, ASP.NET 2.0-s alkalmazások, amelyek az IIS 6-on futnak (Windows Server 2003 vagy Windows Server 2003 R2 rendszeren) az alábbihoz hasonló hibákat eredményezhetnek: System.Web.HttpException: Path '/[yourApplicationRoot]/eurl.axd/[Value]' was not found. |
* Ha ASP.NET 4 nem szükséges a webhely futtatásához, akkor a webhelyet áttérítheti az ASP.NET 2.0 használatára. -vagy- * Ha az ASP.NET 4 szükséges ahhoz, hogy a webhely fusson, helyezze át a gyermek ASP.NET 2.0 virtuális könyvtárakat egy másik webhelyre, amely az ASP.NET 2.0-re van leképezve. -vagy- * Tiltsa le a bővítmény nélküli URL-címeket. További információért lásd az "ASP.NET 2.0-s alkalmazások HttpException-hibákat eredményezhetnek, amelyek az eurl.axd hivatkozásra mutatnak" című dokumentumban található ASP.NET 4 kompatibilitástörő módosítások részt az ASP.NET webhelyen. |
| Tagságtípusok | Az ASP.NET tagság egyes típusai (például MembershipProvider) átkerültek a System.Web.dll könyvtárból a System.Web.ApplicationServices.dll könyvtárba. A típusok át lettek helyezve az ügyfél és a kiterjesztett .NET-keretrendszer termékváltozatai közötti architekturális rétegzési függőségek feloldása érdekében. | A ASP.NET korábbi verzióiról frissített és áthelyezett tagságtípusokat használó osztálykódtárak fordítása sikertelen lehet, ha egy ASP.NET 4-projektben használják. Ha igen, adjon hozzá egy hivatkozást az osztálykönyvtári projektben a System.Web.ApplicationServices.dll-ra. |
| Menüvezérlő változásai | A vezérlő módosításai a Menu következő viselkedést eredményezik: * Ha MenuRenderingMode értéke List, vagy ha MenuRenderingMode értéke Default és ControlRenderingCompatibilityVersion értéke 4.0 vagy újabb, akkor a PopOutImageUrl tulajdonságnak nincs hatása.* Ha a StaticPopOutImageUrl és DynamicPopOutImageUrl tulajdonságokban megadott elérési út fordított perjelet (\) tartalmaz, a képek nem jelennek meg. (Az ASP.NET korábbi verzióiban az elérési út tartalmazhat visszaperjelet.) |
* Az egyes menüelemek tulajdonságának beállítása helyett állítsa be a PopOutImageUrl vagy StaticPopOutImageUrl tulajdonságát a szülő DynamicPopOutImageUrl vezérlőn. -vagy- Állítsa be MenuRenderingMode Table-re, vagy állítsa be MenuRenderingModeDefault-ra, és állítsa be ControlRenderingCompatibilityVersion3.5-re. Ezek a beállítások miatt a vezérlő a Menu ASP.NET korábbi verzióiban használt HTML-táblázatalapú elrendezést használja.* Ha a StaticPopOutImageUrl vagy DynamicPopOutImageUrl tulajdonság elérési útja fordított perjelet (\) tartalmaz, helyettesítse perjelre (/). |
| Mobilszerelvény Web.config fájlban | Az ASP.NET korábbi verzióiban egy, a System.Web.Mobile.dll szerelvényre mutató hivatkozás szerepelt a gyökér Web.config fájlban a assembliessystem.web/compilation szakaszban. A teljesítmény javítása érdekében a rendszer eltávolította a szerelvényre mutató hivatkozást.Megjegyzés: A System.Web.Mobile.dll összeállítás és az ASP.NET mobilvezérlők beletartoznak az ASP.NET 4-hez, de ezek már elavultak. |
Ha típusokat szeretne használni ebből a szerelvényből, adjon hozzá egy hivatkozást a szerelvényhez a gyökér Web.config fájlban vagy egy alkalmazás Web.config fájlban. |
| Kimeneti gyorsítótárazás | Az ASP.NET 1.0-ban egy hiba miatt a kimeneti gyorsítótárként megadott Location="ServerAndClient" beállítású gyorsítótárazott oldalak a válaszban Vary:* HTTP-fejlécet bocsátottak ki. Az az eredménye volt, hogy az ügyfélböngészők soha ne gyorsítótárazzák helyben az oldalt. A ASP.NET 1.1-ben hozzáadta a SetOmitVaryStar metódust, amely meghívható a Vary:* fejléc letiltásához. A hibajelentések azonban arra utalnak, hogy a fejlesztők nem ismerik a meglévő SetOmitVaryStar viselkedést.A ASP.NET 4-ben a Vary:* HTTP-fejléc már nem lesz kibocsátva a következő irányelvet meghatározó válaszokból:<%@ OutputCache Location="ServerAndClient" %>Ennek eredményeképpen a SetOmitVaryStar metódusra már nincs szükség a Vary:* fejléc letiltásához. Az attribútumhoz a "ServerAndClient" értéket megadó alkalmazásokban a Location lapok gyorsítótárazhatók lesznek a böngészőben anélkül, hogy fel kellene hívni SetOmitVaryStar. |
Ha az alkalmazás lapjainak ki kell bocsátaniuk Vary:*, hívja meg a AppendHeader metódust, ahogyan az alábbi példában látható.System.Web.HttpResponse.AppendHeader("Vary","*");Másik lehetőségként módosíthatja a kimeneti gyorsítótárazási Location attribútum értékét "Kiszolgáló" értékre. |
| Lapelemzés | A ASP.NET weblapok (.aspx fájlok) és a felhasználói vezérlők (.ascx fájlok) lapelemzője szigorúbb ASP.NET 4-ben, mint a ASP.NET korábbi verzióiban, és több korrektúrát jelöl érvénytelennek, mint a korábbi verziókban. | Vizsgálja meg a lap futtatásakor megjelenő hibaüzeneteket, és javítsa ki az érvénytelen korrektúra miatt keletkező hibákat. |
| Útlevéltípusok | Az ASP.NET 2.0-s verzióba beépített Passport-támogatás elavult, és a Passport (most élő azonosítójú SDK) változásai miatt nem támogatott. Ennek eredményeképpen a Passporthoz System.Web.Security kapcsolódó típusok mostantól az ObsoleteAttribute attribútummal vannak megjelölve. |
Módosítsa azokat a kódokat, amelyek Passport típusokat használnak a System.Web.Security névtérben, például PassportIdentity, úgy hogy a Windows Live ID SDK-t használják. |
| PathInfo-információk a FilePath tulajdonságban | ASP.NET 4 már nem tartalmazza a PathInfo értéket a visszaadott értékekben olyan tulajdonságok esetében, mint FilePath, AppRelativeCurrentExecutionFilePath és CurrentExecutionFilePath. Ehelyett az PathInfo információk a következő helyen PathInfoérhetők el: . Képzelje el például a következő URL-töredékét:/testapp/Action.mvc/SomeActionA ASP.NET HttpRequest korábbi verzióiban a tulajdonságok a következő értékekkel rendelkeznek: * FilePath: /testapp/Action.mvc/SomeAction* PathInfo: (üres) A ASP.NET 4-ben HttpRequest a tulajdonságok a következő értékekkel rendelkeznek: * FilePath: /testapp/Action.mvc* PathInfo: SomeAction |
Vizsgálja meg a kódot olyan helyeken, ahol az osztály tulajdonságaira támaszkodva adja vissza az HttpRequest elérésiút-információkat. Módosítsa a kódot úgy, hogy az tükrözze az elérésiút-adatok visszaadásának változásait. |
| Érvényesítés kérése | A kérések érvényesítésének javítása érdekében a ASP.NET kérésérvényesítés a kérelem életciklusának korábbi szakaszában lesz meghívva. Ennek eredményeképpen a nem .aspx fájlokhoz tartozó kérelmek, például a webszolgáltatás-hívások és az egyéni kezelők esetén, lefut az érvényesítés. A kérelmek érvényesítése akkor is aktív lesz, ha egyéni HTTP-modulok futnak a kérelemfeldolgozási folyamatban. A módosítás eredményeként a .aspx fájloktól eltérő erőforrásokra vonatkozó kérelmek érvényesítési hibákat okozhatnak. A kérelemfolyamatban (például egyéni HTTP-modulokban) futó egyéni kód kérésérvényesítési hibákat is eredményezhet. |
Ha szükséges, visszaállíthatja a régi viselkedést, hogy csak .aspx lapok aktiválják a kérések érvényesítését a webes konfigurációs fájl alábbi beállításával:<httpRuntime requestValidationMode="2.0" />Figyelmeztetés: Ha visszaáll a régi viselkedésre, győződjön meg arról, hogy a meglévő kezelőkben, modulokban és más egyéni kódban lévő összes kód ellenőrzi a potenciálisan nem biztonságos HTTP-bemeneteket, amelyek XSS-támadási vektorok lehetnek. |
| Útválasztás | Ha fájlrendszerbeli webhelyet hoz létre a Visual Studio 2010-ben, és a webhely egy olyan mappában van, amely tartalmaz egy pont (.) értéket a mappa nevében, az URL-útválasztás nem fog megbízhatóan működni. A rendszer HTTP 404-hibát ad vissza néhány virtuális útvonalról. Ez azért fordul elő, mert a Visual Studio 2010 helytelen elérési úttal indítja el a Visual Studio fejlesztői kiszolgálót a legfelső szintű virtuális könyvtárhoz. | * A fájlalapú webhely Tulajdonságok lapján módosítsa az Virtual Path attribútumot "/" értékre.-vagy- * Webhelyprojekt helyett webalkalmazás-projektet hozhat létre. A webalkalmazás-projektek nem rendelkeznek ezzel a problémával, és az URL-útválasztás akkor is működik, ha a projektmappának van egy pont a nevében. -vagy- * Hozzon létre egy IIS-ben üzemeltetett HTTP-alapú webhelyet. Az IIS által üzemeltetett webhelyek pontokkal rendelkezhetnek a virtuális elérési úton és a projektfájl mappájában. |
| SharePoint-webhelyek | Ha olyan ASP.NET 4-es webhelyet próbál futtatni, amely egy Olyan SharePoint-webhely gyermekeként van üzembe helyezve, amely egy egyéni részleges megbízhatósági szintet tartalmaz, WSS_Minimala következő hibaüzenet jelenik meg:Could not find permission set named 'ASP.Net'. |
Jelenleg a SharePoint egyik verziója sem kompatibilis a ASP.NET. Ennek eredményeképpen ne kíséreljen meg ASP.NET 4-webhelyet egy SharePoint-webhely gyermekeként futtatni. |
| XHTML 1.1 szabványok | Az új webhelyek XHTML 1.1-es megfelelőségének engedélyezéséhez a .NET Framework 4 ASP.NET vezérlői létrehoznak XHTML 1.1-kompatibilis HTML-t. Ez a renderelés az elemen belüli <system.Web> Web.config fájlban az alábbi beállítással engedélyezve van:<pages controlRenderingCompatibilityVersion="4.0"/>Ez a beállítás alapértelmezés szerint 4.0-ra van állítva. A Visual Studio 2008-ról frissített webes projektek esetében engedélyezve van a 3.5-ös beállítás a kompatibilitáshoz. |
Nincs. |
Központ
Általános funkciók
| Tulajdonság | Különbségek a 3,5 SP1-től | Javasolt módosítások |
|---|---|---|
| CardSpace | A Windows CardSpace már nem szerepel a .NET-keretrendszerben; külön kell megadni. | Töltse le a Windows CardSpace-t a Microsoft letöltőközpontból. |
| Konfigurációs fájlok | Kijavítottuk, hogy a .NET-keretrendszer hogyan fér hozzá az alkalmazáskonfigurációs fájlokhoz. | Ha az alkalmazáskonfigurációs fájl neveapplication-name.config, nevezze át application-name.exe.config. Nevezze át például MyApp.configMyApp.exe.config. |
| C# kódfordító | A Compiler, CompilerError és ErrorLevel osztályok, amelyek a Microsoft.CSharp névtérben voltak, már nem érhetők el, és a szerelvény (cscompmgd.dll) már nem szerepel a .NET-keretrendszerben. |
Használja az osztályt CodeDomProvider és más osztályokat a System.CodeDom.Compiler névtérben. További információ: A CodeDOM használata. |
| Üzemeltetés (nem felügyelt API) | Az üzemeltetési képességek javítása érdekében néhány üzemeltetési aktiválási API elavult. A folyamaton belüli egymás melletti végrehajtási funkciók lehetővé teszik, hogy az alkalmazások ugyanabban a folyamatban tölthessék be és indíthassák el a .NET-keretrendszer több verzióját. Futtathat például olyan alkalmazásokat, amelyek a .NET-keretrendszer 2.0 SP1-en és a .NET-keretrendszer 4-en alapuló bővítményeken (vagy összetevőkön) alapulnak ugyanabban a folyamatban. A régebbi összetevők továbbra is a régebbi .NET-keretrendszerverziót használják, az új összetevők pedig az új .NET-keretrendszert. | Használja a In-Process párhuzamos végrehajtásban leírt konfigurációkat. |
| Új biztonsági modell | A kódhozzáférés biztonsági (CAS) házirendje ki lett kapcsolva, és egy egyszerűsített modellre váltottuk fel, a .NET-keretrendszer 4 biztonsági változásaiban leírtak szerint. | Előfordulhat, hogy módosításokra lesz szükség, ha az alkalmazásokban a CAS-ra támaszkodik. További információ: Code Access biztonsági házirendek kompatibilitása és migrálása. |
Dátum és idő
Névtér: System
Szerelvény: mscorlib (mscorlib.dll)
| Tulajdonság | Különbségek a 3,5 SP1-től | Javasolt módosítások |
|---|---|---|
| Nyári időszámítás | A rendszerórával való konzisztensség érdekében az időtulajdonságok (például Local és Now) mostantól operációsrendszer-szabályokat használnak más .NET-keretrendszer-adatok helyett a nyári időszámítási műveletekhez. | Nincs. |
| Sztringek formázása | A kultúraérzékeny formázás támogatása érdekében a TimeSpan struktúra új túlterheléseket tartalmaz a ToString, Parse és TryParse metódusokhoz, valamint új ParseExact és TryParseExact metódusokat. |
Nincs. |
Globalizáció
Az új semleges és specifikus kultúrák listájáért tekintse meg a globalizáció és a honosítás újdonságait.
Névtér: System.Globalization
Szerelvény: mscorlib (mscorlib.dll)
| Tulajdonság | Különbségek a 3,5 SP1-től | Javasolt módosítások |
|---|---|---|
| Kulturális nevek | A következő névváltozások a német, a divehi és az afrikai kultúrát érintik: * CurrencyEnglishName: A német (Svájc) (de-CH) kultúra pénznemneve "sFr"-ről "Fr"-ra változott. Az Divehi (Maldív-szigetek) (dv-MV) kultúra hosszú dátumformátuma megváltozott: a "dd/MMMM/yyyy" helyett most "dd/MM/yyyy" lett. * PMDesignator: Az afrikaans (Dél-Afrika) (af-ZA) kultúra P.M. jelölője "nm"-ről "PM"-re változott. |
Vegye észre a kultúra névváltozásait. |
| LCID paraméter | Az automatizálási kiszolgáló beállításainak várt viselkedésével való konzisztensség érdekében a CLR már nem adja át a paraméter aktuális kultúráját a LCID nem felügyelt COM-alapú alkalmazásoknak. Ehelyett az 1033-at (en-us) adja át a kultúrához. |
Nincs szükség módosításra, kivéve azokat a natív alkalmazásokat, amelyek egy adott kultúrát igényelnek. |
| Elavult kulturális típusok | A CultureTypes kulturális és CultureTypes kulturális típusok elavultak. A visszamenőleges kompatibilitás CultureTypes érdekében most az előző .NET-keretrendszerben szereplő semleges és specifikus kultúrákat adja vissza, és CultureTypes most egy üres listát ad vissza. |
Használja a CultureTypes felsorolás egyéb értékeit. |
| Kultúra lekérése | A Windows 7-től kezdődően a .NET-keretrendszer 4 az adatok tárolása helyett lekéri a kulturális adatokat az operációs rendszerből. A .NET-keretrendszer emellett szinkronizálja a Windowst az adatok rendezéséhez és a rendszerezéshez. | Nincs. |
| Unicode 5.1-szabványok | A .NET-keretrendszer mostantól támogatja az összes Unicode 5.1 karaktert – körülbelül 1400 karakter hozzáadásával. A további karakterek közé tartoznak az új szimbólumok, nyilak, diakritikák, írásjelek, matematikai szimbólumok, CJK-vonások és ideográfok, további malajálam- és telugu numerikus karakterek, valamint különböző mianmari, latin, arab, görög, mongol és cirill karakterek. A következő új szkriptek támogatottak a Unicode 5.1-ben: Sundanese, Lepcha, Ol Chiki, Vai, Saurashtra, Kayah Li, Rejang, Gurmukhi, Odia, Tamil, Telugu és Malayalam karakterek és Cham. | Nincs. |
Kivételek
Névterek: System, System.Runtime.ExceptionServices
Szerelvény: mscorlib (mscorlib.dll)
| Tulajdonság | Különbségek a 3,5 SP1-től | Javasolt módosítások |
|---|---|---|
| A sérült folyamatállapot kivételei | A CLR már nem biztosít kivételeket a sérült folyamatállapothoz a felügyelt kód kivételkezelőinek. | Ezek a kivételek azt jelzik, hogy egy folyamat állapota sérült. Nem javasoljuk, hogy ebben az állapotban futtassa az alkalmazást. További információért nézd meg az HandleProcessCorruptedStateExceptionsAttribute és a Sérült állapot kivételeinek kezelése című írást az MSDN magazinban. |
| Végrehajtási motor kivételei | ExecutionEngineException mára elavult, mert egy elkapható kivétel lehetővé teszi egy instabil folyamat futtatását. Ez a változás javítja a futásidőben a kiszámíthatóságot és a megbízhatóságot. | Használjon InvalidOperationException a feltétel jelzésére. |
Elmélkedés
Névtér: System.Reflection
Szerelvény: mscorlib (mscorlib.dll)
| Tulajdonság | Különbségek a 3,5 SP1-től | Javasolt módosítások |
|---|---|---|
| Szerelvénykivonat-algoritmusok | A HashAlgorithm tulajdonság most visszatér AssemblyHashAlgorithm, mert a futtatókörnyezet nem ismeri a hivatkozott szerelvény kivonatoló algoritmusát, amikor a szerelvény nincs betöltve. (Ez arra vonatkozik, hogy a tulajdonságot egy hivatkozott szerelvényen használja, például azon, amelyet a GetReferencedAssemblies metódus ad vissza.) | Nincs. |
| Összeállítás betöltése | A szerelvények redundáns betöltésének megakadályozása és a virtuális címtér megtakarítása érdekében a CLR most már csak a Win32 MapViewOfFile függvény használatával tölti be a szerelvényeket. Már nem is hívja meg a függvényt LoadLibrary .Ez a változás a diagnosztikai alkalmazásokat a következő módokon érinti: * A ProcessModuleCollection többé nem tartalmaz modulokat egy osztálykönyvtárból (.dll fájlból), amit a Process.GetCurrentProcess().Modules hívás eredményez.* A függvényt használó Win32-alkalmazások nem látják az EnumProcessModules összes felügyelt modult a listában. |
Nincs. |
| Deklarálás típusa | A DeclaringType tulajdonság most már helyesen null értéket ad vissza, ha a típus nem rendelkezik deklarálási típussal. | Nincs. |
| meghatalmazottak | A delegált mostantól ArgumentNullException dob, nem pedig NullReferenceException, amikor a delegáló konstruktorának nulla értékű paramétert adnak át. | Győződjön meg arról, hogy a kivételkezelés fogásokat okoz ArgumentNullException. |
| Globális közös gyűjteménytár helyének módosítása | A .NET Framework 4 szerelvények esetében a globális szerelvénygyorsítótár át lett helyezve a Windows könyvtárból (%WINDIR%) a Microsoft.Net alkönyvtárba (%WINDIR%\Microsoft.Net). A korábbi verziókból származó szerelvények a régebbi mappában maradnak. A nem felügyelt ASM_CACHE_FLAGS enumerálás tartalmazza az új ASM_CACHE_ROOT_EX jelzőt. Ez a jelző lekéri a .NET-keretrendszer 4-szerelvények gyorsítótárának helyét, amelyet a GetCachePath függvény szerezhet be. |
Nincs, feltéve, hogy az alkalmazások nem használnak explicit útvonalakat az összeállításokhoz, mivel ez nem javasolt eljárás. |
| Globális szerelvénygyorsítótár-eszköz | A Gacutil.exe (Global Assembly Cache Tool) már nem támogatja a parancshéj bővítmény-megjelenítőt. | Nincs. |
Interoperabilitás
Névtér: System.Runtime.InteropServices
Szerelvény: mscorlib (mscorlib.dll)
| Tulajdonság | Különbségek a 3,5 SP1-től | Javasolt módosítások |
|---|---|---|
| Puffer hossza (nem felügyelt API) | A memória megtakarítása érdekében az pBufferLengthOffset paraméterhez tartozó funkcionalitás az ICorProfilerInfo2::GetStringLayout metódusban úgy módosult, hogy megfeleljen a pStringLengthOffset paraméternek. Mindkét paraméter most a sztring hosszának eltolási helyére mutat. A puffer hosszát eltávolították a karakterlánc osztály ábrázolásából. |
Távolítsa el a puffer hosszával kapcsolatos függőségeket. |
| JIT-hibakeresés | Az igény szerinti (JIT) hibakeresés regisztrációjának egyszerűsítése érdekében a .NET-keretrendszer hibakeresője mostantól csak az AeDebug beállításkulcsot használja, amely szabályozza a JIT hibakeresési viselkedését a natív kód esetében. Ez a változás a következőket eredményezi: * A továbbiakban nem regisztrálhat két különböző hibakeresőt a felügyelt és a natív kódhoz. * Nem indíthatja el automatikusan a hibakeresőt egy nem interaktív folyamat esetén, de megkérheti a felhasználót egy interaktív folyamatra. * A továbbiakban nem kap értesítést arról, ha a hibakereső nem indul el, vagy ha nincs elindítandó regisztrált hibakereső. * Az alkalmazás interaktivitásától függő automatikus indítási szabályzatok már nem támogatottak. |
Szükség szerint módosítsa a hibakeresési műveleteket. |
| Platformhívási funkció | Az együttműködés teljesítményének javítása érdekében a nem felügyelt kódokkal, a platformhívásoknál használt helytelen hívási konvenciók most az alkalmazás meghibásodását okozzák. A korábbi verziókban a kiosztási réteg megoldotta ezeket a hibákat a hierarchikus rétegekben. | Az alkalmazások hibakeresése a Microsoft Visual Studio-ban figyelmezteti Önt ezekre a hibákra, hogy kijavíthassa azokat. Ha olyan bináris fájlok vannak, amelyek nem frissíthetők, a <NetFx40_PInvokeStackResilience> elemet belefoglalhatja az alkalmazás konfigurációs fájljába, hogy a hívási hibák a korábbi verziókhoz hasonlóan feloldhatók legyenek a veremen. Ez azonban befolyásolhatja az alkalmazás teljesítményét. |
| Eltávolított felületek (nem felügyelt API) | A fejlesztői félreértések elkerülése érdekében a következő felületek el lettek távolítva, mert nem biztosítottak hasznos futtatókörnyezeti forgatókönyveket, és a CLR nem biztosított és nem fogadott el implementációkat: * INativeImageINativeImageDependency * INativeImageInstallInfo * INativeImageEvaluate * INativeImageConverter * ICorModule * IMetaDataConverter |
Nincs. |
Adat
Ez a szakasz az adatkészletek és SQL-ügyfelek, az Entity Framework, a LINQ–SQL és a WCF-adatkiszolgálók (korábbi nevén ADO.NET Data Services) használatával kapcsolatos migrálási problémákat ismerteti.
DataSet és SQL-ügyfél
Az alábbi táblázat a korábban korlátozásokkal vagy egyéb problémákkal kapcsolatos funkciók fejlesztéseit ismerteti.
Névterek: System.Data, System.Data.Objects.DataClasses, System.Data.SqlClient
Szerelvények: System.Data (System.Data.dll), System.Data.Entity (System.Data.Entity.dll)
| Tulajdonság | Különbségek a 3,5 SP1-től |
|---|---|
| POCO-forgatókönyvek | Az IRelatedEnd interfész új módszerekkel fejleszti használhatóságát egyszerű régi CLR-objektumok (POCO)-forgatókönyvekben. Ezek az új metódusok egy Object helyett IEntityWithRelationships entitást használnak paraméterként. |
| Sorok szerkesztése | Az IndexOf osztály által DataView implementált metódus most már helyesen adja vissza a szerkesztett sor értékét a -1 helyett. |
| Események | Az PropertyChanged esemény akkor jön létre, ha egy sor módosított állapotban van, és a RejectChanges metódust meghívja. Ez a módosítás megkönnyíti az objektumok tartalmát elérhetővé tevő felhasználói felületi DataSet vezérlők létrehozását. |
| Kivételek | A Prepare metódus mostantól akkor dob egy InvalidOperationException hibát, ha a kapcsolat nincs beállítva vagy nincs megnyitva NullReferenceException helyett. |
| Leképezési nézetek | A lekérdezésnézet-leképezési hibákat mostantól a tervezési időben észlelik, ahelyett, hogy futási időben generálnának NullReferenceException . A megfeleltetés érvényesítése mostantól azt a hibát észleli, amelyben a fogalmi séma (CSDL) két társítási halmaza ugyanarra az oszlopra van leképezve. |
| Tranzakciók | Ha egy alkalmazás megpróbál egy utasítást végrehajtani egy kapcsolaton, miután egy tranzakció befejeződött (beleértve a megszakítást vagy a visszaállítást is), most egy InvalidOperationException kivételt dob a rendszer. A korábbi verziók nem hoztak kivételt, és lehetővé teszik további parancsok végrehajtását még akkor sem, ha egy tranzakció megszakadt. |
Entity Framework
Az alábbi táblázat a korábban korlátozásokkal vagy egyéb problémákkal kapcsolatos funkciók fejlesztéseit ismerteti.
Névterek: System.Data, System.Data.Objects, System.Data.Objects.DataClasses
Szerelvények: System.Data.Entity (System.Data.Entity.dll)
| Tulajdonság | Különbségek a 3,5 SP1-től |
|---|---|
| Entitásobjektumok | Az Detach metódus meghívásakor most paritás van az SaveChanges metódus és az entitásobjektum állapota között. Ez a továbbfejlesztett konzisztencia megakadályozza, hogy váratlan kivételeket dobjon ki. |
| Entitás SQL | Az entity SQL azonosítófeloldási szabályai javultak. Az Entity SQL-elemző továbbfejlesztett logikával rendelkezik a többrészes azonosítók feloldásához. |
| Szerkezeti széljegyzetek | Az Entity Framework mostantól felismeri a szerkezeti széljegyzeteket. |
| Lekérdezések | A lekérdezésekben a következő fejlesztések történtek: * Az GroupBy üres gyűjteményen null kulcsot használó lekérdezések nem adnak vissza sorokat, függetlenül attól, hogy vannak-e további kijelölések a lekérdezésben.* A LINQ-ban létrehozott SQL és Entity-SQL lekérdezések alapértelmezés szerint nem Unicode-értékekként kezelik a sztringparamétereket. |
LINQ to SQL
Az alábbi táblázat a korábban korlátozásokkal vagy egyéb problémákkal kapcsolatos funkciók fejlesztéseit ismerteti.
Névtér: System.Data.Linq
Szerelvény: System.Data.Linq (System.Data.Linq.dll)
| Tulajdonság | Különbségek a 3,5 SP1-től |
|---|---|
| Események | A EntitySet<TEntity> gyűjtemény mostantól ListChanged eseményt vált ki a hozzáadási és eltávolítási műveleteknél, ha a EntitySet<TEntity> ki van ürítve, valamint akkor is, amikor a gyűjtemény be van töltve. |
| Lekérdezések |
Skip(0) már nem kerül figyelmen kívül hagyásra a LINQ to SQL lekérdezésekben. Ennek eredményeképpen az ezzel a módszerrel rendelkező lekérdezések eltérően viselkedhetnek. Bizonyos esetekben például záradékra van szükség OrderBy mellett Skip(0), és a lekérdezés kivételt dob ki NotSupportedException, ha a OrderBy záradék hiányzik. |
WCF Data Services
Az alábbi táblázat a korábban korlátozásokkal vagy egyéb problémákkal kapcsolatos funkciók fejlesztéseit ismerteti.
Névterek: System.Data.Services, System.Data.Services.Client, System.Data.Services.Common, System.Data.Services.Providers
Szerelvények: System.Data.Services (System.Data.Services.dll), System.Data.Services.Client (System.Data.Services.Client.dll)
| Tulajdonság | Különbségek a 3,5 SP1-től |
|---|---|
| Kötegelt bináris tartalom | A WCF Data Services mostantól támogatja a kötegelt bináris tartalmakat a kérésekben és válaszokban. |
| Elfogók módosítása | A változtatási elfogók mostantól végrehajtásra kerülnek egy törlési kérés esetén. A változáselfogó olyan metódus, amely minden alkalommal fut, amikor a kiszolgáló kérést kap az entitáskészlet egy entitásának módosítására. A bejövő kérés végrehajtása előtt fut. A változáselfogó hozzáférést biztosít a módosítandó entitáshoz és a rajta végrehajtott művelethez. |
| Kivételek | A következő feltételek mostantól hasznosabb kivételeket eredményeznek a NullReferenceExceptionkövetkező helyett: * TimeoutException amikor egy adatátviteli szolgáltatás hívása túllépi az időkorlátot. * A DataServiceRequestException egy rossz kérés adatszolgáltatásnak küldésekor. Az alkalmazásokban módosítania kell a kivételkezelést, hogy elkapja az új kivételeket. |
| fejlécek | A következő fejlesztéseket hajtották végre a fejléceken: * A WCF Data Services mostantól helyesen elutasít egy eTag meghatározatlan értékkel rendelkező fejlécet.* A WCF Data Services most hibát ad vissza, és nem hajtja végre a hivatkozásra irányuló törlési kérést, ha egy if-* fejléc szerepel a kérelemben.* A WCF Data Services mostantól hibát ad vissza az ügyfélnek az Elfogadás fejlécben megadott formátumban (Atom, JSON). |
| JSON-olvasó | A JavaScript Object Notation (JSON) olvasó most már helyesen jelez hibát, amikor beolvassa az egyetlen fordított perjel ("\") escape karaktert a WCF Data Service-nek küldött JSON hasznos adatainak feldolgozása során. |
| Összeolvadások | A MergeOption enumeráláshoz a következő fejlesztések készültek: * Az MergeOption egyesítési beállítás a továbbiakban nem módosítja az ügyfélen lévő entitást az adatszolgáltatásból érkező további válaszok eredményeként. * A MergeOption beállítás mostantól konzisztens a dinamikus SQL és a tárolt eljárásalapú frissítések között. |
| Kérések | A OnStartProcessingRequest metódus meghívása az adatszolgáltatásokra irányuló kérések feldolgozása előtt történik. Ez lehetővé teszi, hogy a kérés megfelelően működjön a szolgáltatások esetében ServiceOperation . |
| streamek | A WCF Data Services már nem zárja be az alapul szolgáló streamet olvasási és írási műveletekhez. |
| Uri | Kijavítottuk az URI-k WCF Data Services-ügyfél általi elszabadulását. |
Windows Communication Foundation (WCF)
Az alábbi táblázat a korábban korlátozásokkal vagy egyéb problémákkal kapcsolatos funkciók fejlesztéseit ismerteti.
| Tulajdonság | Különbségek a 3,5 SP1-től |
|---|---|
| Konfigurációs fájlok | A viselkedések konfigurációs fájlhierarchián keresztüli öröklésének engedélyezéséhez a WCF mostantól támogatja a konfigurációs fájlok egyesítését. A konfigurációöröklési modell kibővült, így a felhasználók olyan viselkedéseket határozhatnak meg, amelyeket a számítógépen futó összes szolgáltatásra alkalmazni fognak. Viselkedésbeli változások akkor fordulhatnak elő, ha a hierarchia különböző szintjein azonos nevű viselkedések vannak. |
| Szolgáltatás üzemeltetése | A továbbiakban nem adhatja meg a <serviceHostingEnvironment> konfigurációs elemet a szolgáltatás szintjén úgy, hogy hozzáadja az attribútumot allowDefinition="MachineToApplication" az elemdefinícióhoz.<serviceHostingEnvironment> Az elem szolgáltatásszinten való megadása technikailag helytelen, és inkonzisztens viselkedést okoz. |
Windows Presentation Foundation (WPF)
Alkalmazások
Névterek: System.Windows, System.Windows.Controls
Szerelvények: PresentationFramework (PresentationFramework.dll)
| Tulajdonság | Különbségek a 3,5 SP1-től | Javasolt módosítások |
|---|---|---|
| kivételkezelés | A hibák korábbi észlelésének engedélyezése érdekében a WPF dob egy TargetInvocationException kivételt, és a InnerException tulajdonságot kritikus kivételekre állítja, például NullReferenceException, OutOfMemoryException, StackOverflowException, és SecurityException kivételekre, ahelyett, hogy az eredeti kivételt fogná fel. | Nincs. |
| Csatolt erőforrások | A csatolás megkönnyítése érdekében a projekt mappastruktúráján kívüli helyen található erőforrásfájlok (például képek) az erőforrásfájl teljes elérési útját használják ahelyett, hogy csak a fájl nevét használták az alkalmazás létrehozásakor az erőforrás-azonosítóként. Az alkalmazás futásidőben fogja tudni megkeresni a fájlokat. | Nincs. |
| Részleges megbízhatósági alkalmazások | Biztonsági megfontolások miatt a részleges megbízhatóságban futó Windows-alapú alkalmazások, amelyek HTML-t tartalmazó WebBrowser vagy Frame vezérlőt tartalmaznak, hibát jeleznek a vezérlő létrehozásakorSecurityException. A böngészőalkalmazások kivételt jelentenek, és az alábbi feltételek teljesülése esetén egy üzenet jelenik meg: * Az alkalmazás a Firefoxban fut. * Az alkalmazás részleges megbízhatóságban fut az internet zónában, nem megbízható helyekről. * Az alkalmazás HTML-t tartalmazó vezérlőt WebBrowser vagy vezérlőelemet Frame tartalmaz. A megbízható helyekről vagy az intranetes zónából futó alkalmazásokra nem lesz hatással. |
A böngészőalkalmazásokban az alábbi műveletek egyikével könnyítheti meg a módosítást: * Futtassa a böngészőalkalmazást teljes jogosultsággal. * Adja hozzá az alkalmazás webhelyét a megbízható helyek zónájába. |
| Erőforrás-szótárak | A témaszintű erőforrás-szótárak javítása és a módosításuk megakadályozása érdekében az erőforrás-szótárakban definiált és témaszintű szótárakba egyesíthető, lefagyasztható erőforrások mostantól mindig zároltként vannak megjelölve, és nem módosíthatók. Ez a fagyásos erőforrások várható viselkedése. | A témaszintű egyesített szótárban definiált erőforrásokat módosító alkalmazásoknak klónozniuk kell az erőforrást, és módosítaniuk kell a klónozott példányt. Másik lehetőségként az erőforrás megjelölhető x:Shared="false" úgy, hogy a ResourceDictionary rendszer minden alkalommal létrehoz egy új másolatot, amikor lekérdezi az erőforrást. |
| Windows 7 | Annak érdekében, hogy a WPF-alkalmazások jobban működjenek Windows 7 rendszeren, az alábbi fejlesztések történtek az ablakok viselkedésének javítása érdekében: * A dokkolás és a kézmozdulatok állapota a felhasználói interakciók alapján a várt módon működik. * A tálcán a Kaszkádolt ablakok, a Halmozott ablakok megjelenítése és az Ablakok egymás melletti megjelenítése parancsok a megfelelő viselkedéssel rendelkeznek, és frissítik a megfelelő tulajdonságokat. * A maximalizált vagy kisméretű ablak Top, Left, Width és Height tulajdonságai mostantól a monitortól függően az ablak megfelelő visszaállítási helyét tartalmazzák a többi érték helyett. |
Nincs. |
| Windows-stílus és átlátszóság |
InvalidOperationException lesz kiváltva, ha megpróbálja a WindowStyle-t más értékre állítani, mint WindowStyle, amikor AllowsTransparencytrue és WindowStateWindowState. |
Ha módosítania kell a WindowStyle, amikor a AllowsTransparency értéke true, meghívhatja a Win32 SetWindowLongPtr függvényt. |
| XPS Viewer | A WPF nem tartalmazza a Microsoft XML Paper Specification Essentials Pack (XPSEP) csomagot. Az XPSEP a Windows 7 és a Windows Vista része. A Windows XP rendszert futtató számítógépeken a .NET Framework 3.5 SP1 telepítése nélkül, a betelepítetteken PrintDialog kívüli WPF API használatával történő nyomtatás a WINSPOOL-ra fog támaszkodni. Egyes nyomtatófunkciók nem jelennek meg, és egyes nyomtatóbeállítások nem lesznek alkalmazva a nyomtatás során. |
Szükség esetén telepítse a Microsoft XML Paper Specification Essentials Pack csomagot. |
Vezérlők
Névterek: System.Windows, System.Windows.Controls, System.Windows.Data, System.Windows.Input
Szerelvények: PresentationFramework (PresentationFramework.dll), PresentationCore (PresentationCore.dll), WindowsBase (WindowsBase.dll)
| Tulajdonság | Különbségek a 3,5 SP1-től | Javasolt módosítások |
|---|---|---|
| párbeszédpanelek | A megbízhatóság javítása érdekében a ShowDialog metódus ugyanazon a szálon van meghívva, amely létrehozta a vezérlőt FileDialog . | Mindenképpen hozzon létre egy vezérlőt FileDialog , és hívja meg a ShowDialog metódust ugyanazon a szálon. |
| Lebegő ablakok | Ha ki szeretné javítani a fókusz-visszaállítási logikát, amely helytelenül aktivál egy lebegő ablakot (így modális párbeszédpanelként jelenik meg), a fókusz visszaállítását a rendszer megakadályozza, ha a jelölt nem az ablak gyermeke. | Nincs. |
| Gyűjtemények elemei | Ha egy elemet áthelyeznek vagy hozzáadnak egy mögöttes gyűjteményhez, az ugyanabban a CollectionView relatív helyen jelenik meg, ha nincs CollectionView rendezve. Ez konzisztenciát biztosít az elem helye között a gyűjteményben és a kapcsolódóban CollectionView. | Az elem ContainerFromItem helyének megkereséséhez használja a IndexOf vagy CollectionView a metódust, és ne egy elem rögzített helyére támaszkodjon. |
| Elrendezések | A szükségtelen újraelrendezések kiküszöbölése érdekében a ShowsNavigationUI módosítása már nem érvényteleníti az elrendezést, és nem okoz újabb elrendezési próbálkozást. | Ha arra számít, hogy a ShowsNavigationUI módosítása egy másik elrendezési ciklust fog eredményezni, a tulajdonság beállítása után hívja meg a InvalidateVisual függvényt. |
| menük | Ha engedélyezni szeretné a ClearType szöveget a menü előugró ablakaiban, módosították az ControlTemplate osztályt, a MenuItem vezérlőt és az egyéb vezérlőket. | Az alkalmazások nem támaszkodhatnak a vezérlősablonok vizuális szerkezetére. A nyilvános szerződés részei közé csak a nevesített részek tartoznak. Ha egy alkalmazásnak meg kell találnia egy adott objektumot egy ControlTemplateadott fájlban, keressen rá a vizualizációfára egy adott típusra ahelyett, hogy egy objektum rögzített helyére támaszkodik a fában. |
| Navigáció | Ha a Frame közvetlenül egy helyre navigál, a IsNavigationInitiator tulajdonság miután a kezdeti navigáció megtörténik true lesz. Ez a módosítás megakadályozza, hogy az indítási forgatókönyvek során további események is létre legyenek állítva. |
Nincs. |
| Előugró ablakok | A CustomPopupPlacementCallback delegált mostantól többször is meghívható az elrendezési ciklus során, nem csak egyszer. | Ha a CustomPopupPlacementCallback meghatalmazott az előző pozíciója alapján számítja ki egy Popup adott pozíciót, csak akkor számítsa újra a pozíciót, ha a popupSize, targetSizevagy offset paraméterek értéke megváltozik. |
| Tulajdonságértékek | A SetCurrentValue metódus lehetővé teszi, hogy egy tulajdonságot érvényes értékre állítson be, bár továbbra is tiszteletben tartja a tulajdonságot érintő kötéseket, stílusokat vagy triggereket. | A vezérlőknek minden alkalommal használniuk SetCurrentValue kell, amikor a tulajdonság értéke valamilyen más művelet mellékhatásaként változik, beleértve a felhasználói manipulációt is. |
| Szövegdobozok | Biztonsági megfontolások miatt a Copy és Cut metódusok csendesen meghiúsulnak, ha részleges megbízhatóság mellett hívják meg őket. Emellett a Copy vagy Cut tulajdonság programozott végrehajtása egy olyan vezérlőelemen, amely a TextBoxBase osztálytól öröklődik, részleges megbízhatósági szinten le lesz tiltva. A felhasználó által kezdeményezett másolási és kivágási parancsok, például egy olyan gombra való kattintás, amelynek Command tulajdonsága ezen parancsok egyikéhez van kötve, működni fog. A normál másolás és kivágás billentyűparancsokkal, illetve a helyi menü segítségével továbbra is ugyanúgy működik, mint korábban, részleges hozzáférés esetén. |
Kösse a CopyCut parancsot egy felhasználó által kezdeményezett művelethez, például kattintson egy gombra. |
Grafika
Névterek: System.Windows, System.Windows.Controls, System.Windows.Data, System.Windows.Input, System.Windows.Media.Effects
Szerelvények: PresentationFramework (PresentationFramework.dll), PresentationCore (PresentationCore.dll), WindowsBase (WindowsBase.dll)
| Tulajdonság | Különbségek a 3,5 SP1-től | Javasolt módosítások |
|---|---|---|
| Bitképeffektusok | A teljesítmény javítása érdekében az BitmapEffect osztály és az BitmapEffect osztályból öröklő osztályok, bár továbbra is jelen vannak, le vannak tiltva. Az effektus a hardveresen gyorsított renderelési folyamat használatával jelenik meg, ha az alábbi feltételek teljesülnek: * Az alkalmazás egy DropShadowBitmapEffect-t vagy egy BlurBitmapEffect-t használ, amelynek sugara kevesebb mint 100 DIU. * Az alkalmazást futtató számítógépen található videokártya támogatja a Pixel Shader 2.0-t. Ha ezek a feltételek nem teljesülnek, egy BitmapEffect objektumnak nincs hatása. Emellett a Visual Studio fordítói figyelmeztetést is létrehoz, amikor az objektummal vagy alosztálysal BitmapEffect találkozik. A PushEffect metódus elavultként van megjelölve. |
Ne használja az örökölt BitmapEffect és származtatott osztályokat, hanem használja a következőből Effectszármaztatott új osztályokat: BlurEffect, DropShadowEffectés ShaderEffect. Saját effektusokat is létrehozhat az osztálytól ShaderEffect való örökléssel. |
| Bitképkeretek | A klónozott BitmapFrame objektumok mostantól megkapják a DownloadProgress, DownloadCompletedés DownloadFailed az eseményeket. Ez lehetővé teszi, hogy a webről letöltött és a Image vezérlőre Style alkalmazott képek megfelelően működjenek. A viselkedés csak akkor változik, ha az alábbi állítások mindegyike igaz: * Feliratkozik az DownloadProgress, vagy DownloadCompletedDownloadFailed eseményre. * A BitmapFrame forrása a webről származik. * A BitmapFrame klónozódik, amíg a letöltés még folyamatban van. |
Ellenőrizze a feladót az eseménykezelőben, és csak akkor tegyen műveletet, ha a feladó az eredeti BitmapFrame. |
| Képek dekódolása | Ha meg szeretné akadályozni, hogy a IOException kezelje a képek dekódolásának elmaradását, az BitmapSource osztály elindítja az DecodeFailed eseményt, ha nem dekódol egy képet. | Távolítsa el a IOException kivételkezelést, és a DecodeFailed esemény használatával ellenőrizze a dekódolási hibát. |
Bemenet
Névterek: System.Windows, System.Windows.Controls, System.Windows.Data, System.Windows.Input
Szerelvények: PresentationFramework (PresentationFramework.dll), PresentationCore (PresentationCore.dll), WindowsBase (WindowsBase.dll)
| Tulajdonság | Különbségek a 3,5 SP1-től | Javasolt módosítások |
|---|---|---|
| Kötési parancspéldányok | Annak érdekében, hogy olyan mechanizmust biztosítson, amely a Nézetmodell-alapú parancspéldányokat nézetalapú beviteli kézmozdulatokhoz köti, az InputBinding osztály mostantól az Freezable helyett az DependencyObject osztályból örököl. A következő tulajdonságok mostantól függőségi tulajdonságok: * Command * CommandParameter * CommandTarget Ez a változás a következőket eredményezi: * Egy InputBinding objektum most, amikor regisztrálják, le van fagyasztva, ahelyett, hogy módosítható maradna. * Az InputBinding osztály korlátozásai miatt a példányszintű DependencyObject objektumok nem érhetők el több szálból. * Az osztályszintű bemeneti kötések nem mutálhatók a regisztráció után, az osztály korlátozásai Freezable miatt. * Nézetmodellben létrehozott parancspéldányokon nem adhat meg bemeneti kötéseket. |
Hozzon létre külön InputBinding osztálypéldányokat önálló szálakon, ha a lekötések módosíthatóak, vagy egyébként rögzítse őket. A regisztrálás után ne mutáljon osztályszintű statikust InputBinding . |
| Böngészőalkalmazások | WPF Browser-alkalmazások (. Az XBAP) mostantól ugyanúgy dolgozza fel a kulcseseményeket, mint a különálló WPF-alkalmazásokat, így az objektumok a megfelelő sorrendben fogadják az irányított kulcseseményeket. | Nincs. |
| Elhalt kulcs kombinációi | A WPF elhomályosítja a halott kulcsokat, amelyek nem hoznak létre látható karaktert, ehelyett azt jelzi, hogy a kulcsot a következő betűbillentyűvel kell kombinálni, hogy egy karaktert állítsunk elő. A billentyűzetbemeneti események, például az KeyDownEvent esemény, jelzik, ha egy billentyű halott billentyű, a Key tulajdonságot a Key értékre állítva. Ez általában azért várható, mert az alkalmazások általában nem kívánnak reagálni a kombinált karaktert létrehozó billentyűzetbemenetre. | Azok az alkalmazások, amelyek a kombinált karakterek részét képező kulcsokat várják, a DeadCharProcessedKey tulajdonság használatával lekérhetik a jelenleg elhomályosított kulcsot. |
| Fókuszkezelő | Ha a FocusManager.GetFocusedElement(DependencyObject) metódus olyan elemet ad át, amelynek az IsFocusScope csatolt tulajdonsága be van állítva true, a metódus egy olyan elemet ad vissza, amely a fókusz hatókörében az utolsó billentyűzetre összpontosító elem, ha és csak akkor, ha a visszaadott elem ugyanabba PresentationSource az objektumba tartozik, mint a metódusnak átadott elem. |
Nincs. |
Felhasználói felület automatizálása
Névtér: System.Windows, System.Windows.Automation.Peers, System.Windows.Automation.Provider, System.Windows.Controls, System.Windows.Data, System.Windows.Input
Szerelvények: PresentationFramework (PresentationFramework.dll), PresentationCore (PresentationCore.dll), UIAutomationProvider (UIAutomationProvider.dll), WindowsBase (WindowsBase.dll)
| Tulajdonság | Különbségek a 3,5 SP1-től | Javasolt módosítások |
|---|---|---|
| Nézetek osztályhierarchiája | A TreeViewAutomationPeer és TreeViewItemAutomationPeer osztályok ItemsControlAutomationPeer-ból öröklik ahelyett, hogy FrameworkElementAutomationPeer-ból. | Ha az TreeViewItemAutomationPeer osztályoktól örököl, és felülbírálja a GetChildrenCore metódust, érdemes megfontolni, hogy olyan objektumot adjon vissza, amely az új TreeViewDataItemAutomationPeer osztályból örököl. |
| Tárolók a képernyőn kívül | Helytelen visszatérési érték kijavításához a IsOffscreenCore metódus mostantól helyesen adja vissza azokat az false elemtárolókat, amelyek görgetés miatt nézeten kívül kerültek. Emellett a metódus értékét nem befolyásolja más ablakok elzáródása, vagy az, hogy az elem látható-e egy adott monitoron. |
Nincs. |
| Menük és gyermekobjektumok | Az objektumoktól MenuItem eltérő gyermekeket tartalmazó menük felhasználói felületi automatizálásának engedélyezéséhez a GetChildrenCore metódus mostantól egy gyermekobjektum AutomationPeer objektumát adja vissza UIElement objektum helyettMenuItemAutomationPeer. | Nincs. |
| Új interfészek és szerelvény | A felhasználói felület automatizálásának új funkcióinak engedélyezéséhez a következő felületek lettek hozzáadva: * IItemContainerProvider * ISynchronizedInputProvider * IVirtualizedItemProvider |
Bármely projektnek, amely WPF automatizálási partnereket épít, explicit hivatkozást kell hozzáadnia a UIAutomationProvider.dll-re. |
| Hüvelykujj | A GetClassNameCore metódus null érték helyett egy értéket ad vissza. Ezért az olyan vezérlők, mint GridSplitter, amelyek az Thumb osztálytól öröklődnek, nevet fognak jelenteni a UI automatizálás számára. | Nincs. |
| Virtualizált elemek | A teljesítmény javítása érdekében a GetChildrenCore metódus csak a vizualizációfán ténylegesen szereplő gyermekobjektumokat adja vissza az összes gyermekobjektum helyett, függetlenül attól, hogy virtualizáltak-e. | Minden elemét iterálhatja egy ItemContainerPattern használatával ItemsControlAutomationPeer. |
XAML
Névterek: System.Windows, System.Windows.Controls, System.Windows.Data, System.Windows.Input, System.Windows.Markup
Szerelvények: PresentationFramework (PresentationFramework.dll), PresentationCore (PresentationCore.dll), WindowsBase (WindowsBase.dll)
| Tulajdonság | Különbségek a 3,5 SP1-től | Javasolt módosítások |
|---|---|---|
| Jelöléskiterjesztés | A WPF mostantól mindig helyesen a ProvideValue metódus értékét használja, és nem adja vissza a MarkupExtension objektumot bizonyos esetekben, amikor jelölőnyelvi kiterjesztést használ egy tulajdonság beállítására, vagy egy elem létrehozására egy gyűjteményben. A jelölő kiterjesztés bizonyos esetekben önmagát adhatja vissza. | Ha az alkalmazás egy erőforrást ér el, amely korábbi verziókban egy MarkupExtension objektumot adott vissza, ahelyett hogy a ProvideValue objektumra hivatkozna, hivatkozzon a MarkupExtension által visszaadott objektumra. |
| Attribútumok elemzése | Az XAML-beli attribútumoknak most már csak egy időszakuk lehet. Például a következők érvényesek:<Button Background="Red"/> (nincsenek időszakok)<Button Button.Background = "Red"/> (egy időszak)A következő már nem érvényes: <Button Control.Button.Background = "Red"/> (több időszak) |
Javítsa ki az egynél több pontot tartalmazó XAML-attribútumokat. |
XML
A táblázat sorai olyan funkciók fejlesztését ismertetik, amelyek korábban korlátozásokkal vagy egyéb problémákkal rendelkeztek.
Séma és átalakítások
Névterek: System.Xml.Linq; System.Xml.Schema, System.Xml.XPath
Szerelvények: System.Xml (System.Xml.dll), System.Xml.Linq (System.Xml.Linq.dll)
| Tulajdonság | Különbségek a 3,5 SP1-től |
|---|---|
| Kaméleon sémák | Az adatok sérülésének megakadályozása érdekében a kaméleonséma klónozása helyesen történik, ha több séma is szerepel bennük. A kaméleon sémák olyan sémák, amelyek nem rendelkeznek célnévtérrel, és ha egy másik XSD-ben szerepelnek, az importáló séma célnévterét veszik át. Gyakran használják őket a gyakori típusok sémába való belefoglalására. |
| Azonosító függvények | Az XSLT-azonosító függvény most null helyett a megfelelő értéket adja vissza, amikor egy XmlReader objektumot egy XLST-nek ad át. Ha a felhasználó létrehozott egy XmlReader objektumot egy LINQ to XML osztályból a CreateReader metódusával, és ezt az XmlReader objektumot átadták egy XSLT-nek, akkor az XSLT-ben található id függvény minden példánya korábban null értéket adott vissza. Ez nem egy engedélyezett visszatérési érték a id függvényhez. |
| Névtér attribútum | Az adatsérülés megakadályozása érdekében az XPathNavigator objektum most helyesen adja vissza az x:xmlns attribútum helyi nevét. |
| Névtér-deklarációk | Egy XmlReader alterület objektumai már nem hoznak létre ismétlődő névtér-deklarációkat egy XML-elemen belül. |
| Séma érvényesítése | A hibás sémaérvényesítés megakadályozása érdekében az osztály lehetővé teszi az XmlSchemaSet XSD-sémák helyes és következetes fordítását. Ezek a sémák más sémákat is magukba foglalhatnak; például a A.xsd tartalmazhatja a B.xsd sémát, amely magába foglalhatja a C.xsd sémát. Ezek bármelyikének összeállítása miatt a függőségek gráfja bejárható. |
| Szkriptfüggvények | A függvény által elérhető függvény már nem ad vissza false helytelenül, ha a függvény ténylegesen elérhető. |
| Uri | A Load metódus most a linq-lekérdezésekben a megfelelő BaseURI-t adja vissza. |
Érvényesítés
Névterek: System.Xml.Linq; System.Xml.Schema, System.Xml.XPath
Szerelvények: System.Xml (System.Xml.dll), System.Xml.Linq (System.Xml.Linq.dll)
| Tulajdonság | Különbségek a 3,5 SP1-től |
|---|---|
| Névtérfeloldók | A ReadContentAs metódus többé nem hagyja figyelmen kívül a IXmlNamespaceResolver neki átadott feloldót. A korábbi verziókban a rendszer figyelmen kívül hagyta a megadott névtérfeloldót, és helyette a XmlReader-t használta. |
| Üres terület | Az olvasó létrehozásakor az adatvesztés megakadályozása érdekében a Create metódus többé nem vet el jelentős szabad területet. Az XML-ellenőrzés felismeri a vegyes tartalmú módot, ahol a szöveg XML jelölésekkel keverhető. Vegyes módban az összes szabad terület jelentős, ezért jelenteni kell. |
Írás
Névterek: System.Xml.Linq; System.Xml.Schema, System.Xml.XPath
Szerelvények: System.Xml (System.Xml.dll), System.Xml.Linq (System.Xml.Linq.dll)
| Tulajdonság | Különbségek a 3,5 SP1-től |
|---|---|
| Entitáshivatkozások | Az adatsérülés megakadályozása érdekében az entitáshivatkozások XML-attribútumokban már nem lesznek kétszeresen átalakítva entitássá. Ha a felhasználó egy entitást próbált meg írni egy xmlns attribútumba, vagy egy xml:lang vagy xml:space attribútumba a WriteEntityRef metódus használatával, az entitás kétszer lett entitásként megjelenítve a kimenetben, így sérültek az adatok. |
| Új vonalkezelés | Az adatok sérülésének XmlWriter megakadályozása érdekében az objektumok tiszteletben tartják a NewLineHandling beállítást. |