Az Azure Data Lake Analytics a .NET-keretrendszer 4.7.2-s verzióra frissít
Fontos
Az Azure Data Lake Analytics 2024. február 29-én megszűnt. További információ ezzel a bejelentéssel.
Az adatelemzéshez a szervezet használhatja a Azure Synapse Analyticset vagy a Microsoft Fabricet.
Az Azure Data Lake Analytics alapértelmezett futtatókörnyezete .NET-keretrendszer 4.5.2-s verzióról .NET-keretrendszer 4.7.2-s verzióra frissül. Ez a módosítás kis kockázatot jelent a módosítások megszakítására, ha az U-SQL-kód egyéni szerelvényeket használ, és ezek az egyéni szerelvények .NET-kódtárakat használnak.
Ez a frissítés a .NET-keretrendszer 4.5.2-es verzióról a 4.7.2-es verzióra azt jelenti, hogy az U-SQL-futtatókörnyezetben (az alapértelmezett futtatókörnyezetben) üzembe helyezett .NET-keretrendszer mostantól mindig 4.7.2 lesz. A .NET-keretrendszer verziókhoz nincs egymás melletti beállítás.
A .NET-keretrendszer 4.7.2-es verzióra való frissítés befejezése után a rendszer felügyelt kódja 4.7.2-es verzióként fog futni, a felhasználó által biztosított kódtárak, például az U-SQL egyéni szerelvények a szerelvény által létrehozott verziónak megfelelő visszamenőlegesen kompatibilis módban fognak futni.
- Ha a szerelvény DLL-jeit a 4.5.2-es verzióhoz hozza létre, az üzembe helyezett keretrendszer 4.5.2-es kódtárként kezeli őket, és (néhány kivétellel) 4.5.2 szemantikát biztosít.
- Mostantól használhat olyan U-SQL egyéni szerelvényeket, amelyek a 4.7.2-es verziójú funkciókat használják, ha a .NET-keretrendszer 4.7.2-es verziót célozza.
A .NET-keretrendszer 4.7.2-es verziójára való frissítés miatt előfordulhat, hogy a .NET-alapú egyéni szerelvényeket használó U-SQL-feladatok kompatibilitástörő változásokat vezetnek be. Javasoljuk, hogy az alábbi eljárással ellenőrizze a visszamenőleges kompatibilitással kapcsolatos problémákat.
Visszamenőleges kompatibilitási problémák keresése
A .NET-kódon futó .NET-kompatibilitási ellenőrzéseknek az U-SQL egyéni szerelvényekben való futtatásával ellenőrizze a visszamenőleges kompatibilitás kompatibilitási hibáinak lehetőségét.
Megjegyzés
Az eszköz nem észleli a tényleges törési változásokat. Csak a .NET API-kat azonosítja, amelyek (bizonyos bemenetek esetén) problémákat okozhatnak. Ha értesítést kap egy problémáról, előfordulhat, hogy a kód továbbra is rendben van, de további részleteket is meg kell adnia.
- Futtassa a visszamenőleges kompatibilitás-ellenőrzőt a .NET-DLL-eken a következővel:
- A Visual Studio-bővítmény használata a .NET Portability Analyzer Visual Studio-bővítményben
- Az önálló eszköz letöltése és használata a GitHub dotnetapiportból. Az önálló eszköz futtatására vonatkozó utasítások a GitHub dotnetapiport kompatibilitástörő módosításainál találhatók
- A 4.7.2-hez. kompatibilitás, azonosítja a
read isRetargeting == True
lehetséges problémákat.
- Ha az eszköz azt jelzi, hogy a kódra hatással lehet-e bármely lehetséges visszalépési inkompatibilitás (néhány gyakori példa az inkompatibilitásokra az alábbiakban látható), akkor a
- A kód elemzése és annak azonosítása, hogy a kód átad-e értékeket az érintett API-knak
- Futtasson egy futtatókörnyezet-ellenőrzést. A futtatókörnyezet üzembe helyezése nem történik meg egymás mellett az ADLA-ban. A frissítés előtt futtatási ellenőrzést végezhet a VisualStudio helyi futtatásával egy helyi .NET-keretrendszer 4.7.2-vel egy reprezentatív adatkészleten.
- Ha valóban hatással van Önre a visszamenőleges kompatibilitás, végezze el a javításhoz szükséges lépéseket (például az adatok vagy a kódlogika javítását).
A legtöbb esetben nem érintheti a visszamenőleges kompatibilitás.
Idővonal
Az új futtatókörnyezet üzembe helyezését itt, a futtatókörnyezet hibaelhárításával ellenőrizheti, és megnézheti a korábbi sikeres feladatokat.
Mi a teendő, ha nem tudom időben áttekinteni a kódot?
A feladatot elküldheti a régi futtatókörnyezeti verzióra (amely a 4.5.2-es verziót célozza), azonban a .NET-keretrendszer egymás melletti képességek hiánya miatt továbbra is csak 4.5.2-es kompatibilitási módban fog futni. Ennek a viselkedésnek köszönhetően továbbra is előfordulhatnak a visszamenőleges kompatibilitással kapcsolatos problémák.
Melyek a leggyakoribb visszamenőleges kompatibilitási problémák?
Az ellenőrző által valószínűleg azonosított leggyakoribb visszalépési inkompatibilitások a következők (ezt a listát a saját belső ADLA-feladatainkon futtatva hoztuk létre), amelyek hatással vannak a kódtárakra (vegye figyelembe, hogy a kódtárakat csak közvetve hívhatja meg, ezért fontos, hogy megtegye az 1. szükséges műveletet a feladatok hatásának ellenőrzéséhez), valamint a lehetséges megoldási műveleteket. Megjegyzés: Szinte minden esetben a saját munkánk, a figyelmeztetések kiderült, hogy hamis pozitívak, mert a legmegszakadásosabb változások szűk természete.
Az IAsyncResult.CompletedSynchronously tulajdonságnak helyesnek kell lennie ahhoz, hogy az eredményül kapott feladat befejeződjön
- A TaskFactory.FromAsync hívásakor az IAsyncResult.CompletedSynchronously tulajdonság implementációjának helyesnek kell lennie ahhoz, hogy az eredményül kapott feladat befejeződjön. Vagyis a tulajdonságnak igaz értéket kell visszaadnia, ha és csak akkor, ha az implementáció szinkronban fejeződött be. Korábban a tulajdonságot nem ellenőrizték.
- Érintett kódtárak: mscorlib, System.Threading.Tasks
- Javasolt művelet: Győződjön meg arról, hogy a TaskFactory.FromAsync helyesen ad vissza igaz értéket
A DataObject.GetData mostantól UTF-8 formátumban kéri le az adatokat
- A .NET-keretrendszer 4-et megcélozó vagy a .NET-keretrendszer 4.5.1-ben vagy korábbi verzióiban futó alkalmazások esetében a DataObject.GetData a HTML-formátumú adatokat ASCII-sztringként kéri le. Ennek eredményeképpen a nem ASCII-karaktereket (a 0x7F-nél nagyobb ASCII-kóddal rendelkező karaktereket) két véletlenszerű karakter jelöli.#N##N#For az .NET-keretrendszer 4.5-ös vagy újabb verzióját megcélzó és a 4.5.2-es
DataObject.GetData
.NET-keretrendszer futtatott alkalmazások UTF-8 formátumban kérik le a HTML-formátumú adatokat, amelyek a 0x7F-nál nagyobb karaktereket jelölnek. - Érintett kódtárak: Glo
- Javasolt művelet: Győződjön meg arról, hogy a lekért adatok a kívánt formátumot használják
- A .NET-keretrendszer 4-et megcélozó vagy a .NET-keretrendszer 4.5.1-ben vagy korábbi verzióiban futó alkalmazások esetében a DataObject.GetData a HTML-formátumú adatokat ASCII-sztringként kéri le. Ennek eredményeképpen a nem ASCII-karaktereket (a 0x7F-nél nagyobb ASCII-kóddal rendelkező karaktereket) két véletlenszerű karakter jelöli.#N##N#For az .NET-keretrendszer 4.5-ös vagy újabb verzióját megcélzó és a 4.5.2-es
Az XmlWriter érvénytelen helyettesítő párokat dob
- A .NET-keretrendszer 4.5.2-es vagy korábbi verzióit célzó alkalmazások esetében a kivétel-tartalék kezeléssel érvénytelen helyettesítő pár írása nem mindig jelez kivételt. A .NET-keretrendszer 4.6-ot megcélzó alkalmazások esetében az érvénytelen helyettesítő pár írására tett kísérlet egy
ArgumentException
. - Érintett kódtárak: System.Xml, System.Xml. Olvasógép
- Javasolt művelet: Győződjön meg arról, hogy nem ír érvénytelen helyettesítő párt, amely argumentumkivételt okoz
- A .NET-keretrendszer 4.5.2-es vagy korábbi verzióit célzó alkalmazások esetében a kivétel-tartalék kezeléssel érvénytelen helyettesítő pár írása nem mindig jelez kivételt. A .NET-keretrendszer 4.6-ot megcélzó alkalmazások esetében az érvénytelen helyettesítő pár írására tett kísérlet egy
A HtmlTextWriter nem jeleníti meg
<br/>
megfelelően az elemet- A .NET-keretrendszer 4.6-os verziójától kezdődően a hívás
HtmlTextWriter.RenderBeginTag()
ésHtmlTextWriter.RenderEndTag()
az<BR />
elem helyesen csak egyet<BR />
szúr be (kettő helyett) - Érintett kódtárak: System.Web
- Javasolt művelet: Győződjön meg arról, hogy beszúrja az elvárt mennyiséget
<BR />
, hogy ne legyen véletlenszerű viselkedés az éles feladatban
- A .NET-keretrendszer 4.6-os verziójától kezdődően a hívás
Módosult a CreateDefaultAuthorizationContext meghívása null argumentummal
- A null authorizationPolicies argumentummal rendelkező hívás
CreateDefaultAuthorizationContext(IList<IAuthorizationPolicy>)
által visszaadott AuthorizationContext implementációja módosította annak implementációját a .NET-keretrendszer 4.6-os verziójában. - Érintett kódtárak: System.IdentityModel
- Javasolt művelet: Győződjön meg arról, hogy null értékű engedélyezési szabályzat esetén az új várt viselkedést kezeli
- A null authorizationPolicies argumentummal rendelkező hívás
Az RSACng most már megfelelően betölti a nem standard méretű RSA-kulcsokat
- A 4.6.2 előtti .NET-keretrendszer verziókban az RSA-tanúsítványokhoz nem szabványos kulcsméretű ügyfelek nem férhetnek hozzá ezekhez a kulcsokhoz a és
GetRSAPrivateKey()
aGetRSAPublicKey()
bővítmény metódusaival. ACryptographicException
rendszer a "Kért kulcsméret nem támogatott" üzenetet küldi. A .NET-keretrendszer 4.6.2-ben ez a probléma ki lett javítva. Hasonlóképpen, ésRSACng.ImportParameters()
most már nem szabványos kulcsméretekkel dolgozik anélkül,RSA.ImportParameters()
hogy az 's-t dobtaCryptographicException
. - Érintett kódtárak: mscorlib, System.Core
- Javasolt művelet: Győződjön meg arról, hogy az RSA-kulcsok a várt módon működnek
- A 4.6.2 előtti .NET-keretrendszer verziókban az RSA-tanúsítványokhoz nem szabványos kulcsméretű ügyfelek nem férhetnek hozzá ezekhez a kulcsokhoz a és
Az elérési út kettőspont-ellenőrzése szigorúbb
- A .NET-keretrendszer 4.6.2-ben számos módosítás történt a korábban nem támogatott útvonalak támogatásához (hosszban és formátumban is). A meghajtóelválasztó (kettőspont) megfelelő szintaxisának ellenőrzése helyesebb lett, aminek az volt a mellékhatása, hogy blokkolt néhány URI-elérési utat néhány olyan Elérésiút API-kban, ahol korábban tolerálták őket.
- Érintett kódtárak: mscorlib, System.Runtime.Extensions
- Javasolt művelet:
A ClaimsIdentity konstruktorokhoz intézett hívások
- A .NET-keretrendszer 4.6.2-től kezdve megváltozik, hogy egy
T:System.Security.Principal.IIdentity
paraméterrel rendelkező konstruktorok hogyanT:System.Security.Claims.ClaimsIdentity
állítják be aP:System.Security.Claims.ClaimsIdentify.Actor
tulajdonságot. Ha azT:System.Security.Principal.IIdentity
argumentum egyT:System.Security.Claims.ClaimsIdentity
objektum, és azP:System.Security.Claims.ClaimsIdentify.Actor
objektum tulajdonságaT:System.Security.Claims.ClaimsIdentity
nemnull
, aP:System.Security.Claims.ClaimsIdentify.Actor
tulajdonság aM:System.Security.Claims.ClaimsIdentity.Clone
metódussal lesz csatolva. A Framework 4.6.1 és korábbi verzióiban aP:System.Security.Claims.ClaimsIdentify.Actor
tulajdonság meglévő hivatkozásként van csatolva. A változás miatt az .NET-keretrendszer 4.6.2-től kezdődően azP:System.Security.Claims.ClaimsIdentify.Actor
újT:System.Security.Claims.ClaimsIdentity
objektum tulajdonsága nem egyenlő aP:System.Security.Claims.ClaimsIdentify.Actor
konstruktor argumentumának tulajdonságávalT:System.Security.Principal.IIdentity
. A .NET-keretrendszer 4.6.1-ben és a korábbi verziókban ez egyenlő. - Érintett kódtárak: mscorlib
- Javasolt művelet: Győződjön meg arról, hogy a ClaimsIdentity a várt módon működik az új futtatókörnyezetben
- A .NET-keretrendszer 4.6.2-től kezdve megváltozik, hogy egy
A vezérlőkarakterek DataContractJsonSerializerrel való szerializálása mostantól kompatibilis az ECMAScript V6 és a V8 rendszerrel
- A .NET-keretrendszer 4.6.2-s és korábbi verzióiban a DataContractJsonSerializer nem szerializált bizonyos speciális vezérlőkaraktereket, például \b, \f és \t, úgy, hogy azok kompatibilisek voltak az ECMAScript V6 és v8 szabványokkal. A .NET-keretrendszer 4.7-től kezdve ezeknek a vezérlőkaraktereknek a szerializálása kompatibilis az ECMAScript V6-tal és a V8-tal.
- Érintett kódtárak: System.Runtime.Serialization.Json
- Javasolt művelet: Azonos viselkedés biztosítása a DataContractJsonSerializerrel