See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 16577|Vastuse: 1

[ASP.NET] Sessiooni olekuid ei saa seriaalida. "StateServer" või "SQLServer" režiimis...

[Kopeeri link]
Postitatud 18.11.2017 21:37:45 | | | |
Sessiooni olekuid ei saa seriaalida. "StateServer" või "SQLServer" režiimis serialiseerib ASP.NET sessiooni oleku objekte, seega mitte-serialiseeritavad objektid või MarshalByRef objektid ei ole lubatud. Samad piirangud kehtivad, kui kohandatud sessiooni oleku salvestus teostab sarnast seriaaliseerimist "Kohandatud" režiimis.        



Lahus:

Muutujaid ei saa Sessioni määramisel serialiseerida, seega proovi lisada klassile [Serialisable]. Probleemide lahendamine

[Serialiseeritav]
avalik klass MyClass
{
.......
}

Räägime [Serialiseeritavast], mida kasutatakse kompilaatori teavitamiseks, et klassi saab serialiseerida

Serialiseerimine tähendab protsessi, mille käigus objekti instantsi oleku salvestatakse salvestusmeediumile. Selles protsessis teisendatakse objekti avalikud ja privaatväljad ning klassi nimi (sh komplekt, milles klass asub) baitvooks enne, kui baitvoog andmevoogu kirjutatakse. Kui objekt hiljem deserialiseeritakse, luuakse originaalobjektist identne koopia.
Serialiseerimismehhanismide rakendamisel objektorienteeritud keskkonnas peab olema kompromisse kasutusmugavuse ja paindlikkuse vahel. Kui sul on selle protsessi üle piisavalt kontrolli, saad selle suuresti automaatseks muuta. Näiteks lihtne binaarne serialiseerimine ei ole piisav või on vaja kindlaks teha, millised klassi väljad tuleb konkreetsel põhjusel serialiseerida. Järgnevates osades uuritakse .NET raamistiku usaldusväärseid seriaalistamise mehhanisme ning toome esile mõned olulised funktsioonid, mis võimaldavad seriaalimisprotsessi vastavalt oma vajadustele kohandada.





Eelmine:ASP.NET StateServer, mis salvestab sessiooni
Järgmine:SQL server, kuidas kopeerida üks tabel teise vastu
 Üürileandja| Postitatud 19.11.2017 16:19:48 |
Mõnede objektide puhul, mis pärivad MarshalByRefist, näiteks DbTransation objektid, ei saa neid serialiseerida. Seetõttu ei saa sa kasutada Sessioni objektide salvestamiseks, mis pärivad MarshalByRef tüübi.
Lahendus on kasutada vahemälu ja SessionID-d sessiooni emuleerimiseks. Cache klass suudab vahemällu salvestada mistahes tüüpi objekti.
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com