FIX: I riferimenti a oggetti STA memorizzati in stato di sessione potrebbero venire danneggiati se Ŕ chiamati da un evento Session_End

Traduzione articoli Traduzione articoli
Identificativo articolo: 827164 - Visualizza i prodotti a cui si riferisce l?articolo.
Avviso
Per la una versione di Microsoft .NET Framework 1.0 di questo articolo, vedere 827163.
Questo articolo Ŕ stato archiviato. L?articolo, quindi, viene offerto ?cosý come Ŕ? e non verrÓ pi¨ aggiornato.
Espandi tutto | Chiudi tutto

In questa pagina

Sintomi

Se si memorizzano i riferimenti agli oggetti apartment a thread singolo (STA) nello stato sessione, e si imposta l'attributo AspCompat su true , i riferimenti diventano danneggiati o potrebbero essere persi quando si tenta di accedere agli oggetti dall'evento Session_End .

Nota In genere, questo problema pu˛ verificarsi se si esegue l'applicazione carichi elevati o se si utilizza uno strumento di stress, ad esempio Application Center Test (ACT) quando si esegue l'applicazione. Quando si verifica questo problema, viene visualizzato un "0x8004e005 errore" messaggio di errore nel registro eventi.

Cause

Il problema si verifica perchÚ l'evento Session_End non Ŕ disponibile per l'esecuzione in stesso thread che la sessione Ŕ stata creata. PoichÚ l'oggetto STA non Ŕ sullo stesso thread cui la sessione Ŕ stata creata, marshalling Ŕ necessario utilizzare per accedere a oggetto. Questo comportamento causa prestazioni ridotte.

╚ possibile memorizzare oggetti STA nello stato sessione. Tuttavia, non Ŕ consigliabile che in questo caso. Per ulteriori informazioni, vedere la sezione "Riferimenti" di questo articolo.

Risoluzione

Questo aggiornamento rapido (hotfix) aggiunge una nuova impostazione di configurazione al file Machine.config. Dopo aver installato l'aggiornamento rapido, la configurazione di applicazione riportato di seguito Ŕ disponibile.
<httpRuntime apartmentThreading=?true|false? />,
in base all'impostazione predefinita, apartmentThreading Ŕ impostata su false . Se si imposta apartmentThreading su true , si verifica il seguente comportamento:
  • Tutti gli eventi di Session_Start eseguiti su thread STA che corrispondono all'ID di sessione, indipendentemente alla pagina di destinazione o il gestore.
  • Tutti gli eventi Session_End eseguire su thread STA che corrispondono all'ID di sessione.
  • AspCompat viene impostata su true per tutte le pagine, fatta eccezione per le pagine con AspCompat impostare in modo esplicito su false .
Nota ╚ comunque possibile eseguire l'evento Session_Start sul thread STA dopo aver applicato questo hotfix se apartmentThreading Ŕ impostata su false e AspCompat Ŕ impostata su true per la pagina di destinazione.

Questo aggiornamento rapido (hotfix) funziona per gli oggetti STA memorizzati direttamente nello stato sessione. Questo aggiornamento rapido (hotfix) funziona anche per un oggetto STA nidificato di un fondo livello ad come oggetto .NET che Ŕ memorizzato nello stato sessione e che contiene un riferimento a un oggetto STA. Tuttavia, questo aggiornamento rapido (hotfix) non funziona per gli oggetti STA memorizzate pi¨ livelli di profonditÓ.

importante Questo aggiornamento rapido (hotfix) contiene due tipi di pacchetti: un pacchetto di Microsoft Windows Installer e un pacchetto di Gestione componenti facoltativi (OCM). Se si utilizza Microsoft Windows Server 2003, Ŕ necessario specificare che Ŕ necessario installare l'aggiornamento di OCM (Windows Server 2003), poichÚ la protezione file di Windows Server 2003 controlla i file di .NET Framework 1.1. Se si utilizza un sistema operativo diverso da Windows Server 2003, Ŕ necessario continuare a utilizzare il pacchetto di Windows Installer.

La versione OCM di questo hotfix Ŕ disponibile nelle seguenti lingue:
  • Inglese (ITA)
  • Giapponese (JPN)
  • Tedesco (DEU)
  • Francese (FRN)
Un hotfix supportato Ŕ disponibile da Microsoft, tuttavia Ŕ destinato esclusivamente per risolvere il problema descritto in questo articolo. Utilizzarla solo nei sistemi in cui si verifica questo problema specifico. Questo aggiornamento rapido (hotfix) potrebbe essere eseguiti ulteriori test. Se non si Ŕ notevolmente interessati da questo problema, si consiglia pertanto di attendere il rilascio del prossimo service pack di Microsoft .NET Framework 1.1 che contiene questo aggiornamento rapido (hotfix).

Per risolvere immediatamente questo problema, contattare il servizio supporto tecnico clienti Microsoft per ottenere l'hotfix. Per un elenco completo di numeri di telefono del servizio supporto tecnico clienti Microsoft e per informazioni sui costi dell'assistenza, visitare il seguente sito Web Microsoft:
http://support.microsoft.com/contactus/?ws=support
Nota in casi particolari, le spese normalmente addebitate per le chiamate al Servizio Supporto Tecnico Clienti Microsoft potrebbero essere annullate qualora un addetto del Supporto Tecnico Microsoft dovesse determinare che uno specifico aggiornamento risolverÓ il problema. I normali costi del Servizio Supporto Tecnico Clienti verranno applicati per eventuali ulteriori domande e problemi che non dovessero rientrare nello specifico aggiornamento in questione.

La versione inglese di questo aggiornamento rapido (hotfix) presenta gli attributi di file (o successivi) elencati nella tabella riportata di seguito. Date e ore per questi file sono indicati nella coordinated universal time (UTC). Quando si visualizzano le informazioni sul file, viene convertito in ora locale. Per calcolare la differenza tra ora UTC e l'ora locale, utilizzare la scheda fuso orario dello strumento Data e ora del Pannello di controllo.
   Date         Time   Version       Size       File name
   ------------------------------------------------------------------------
   18-Sep-2003  05:18  1.1.4322.947    258,048  Aspnet_isapi.dll
   18-Sep-2003  05:18  1.1.4322.947     20,480  Aspnet_regiis.exe
   18-Sep-2003  05:18  1.1.4322.947     32,768  Aspnet_state.exe
   18-Sep-2003  05:18  1.1.4322.947     32,768  Aspnet_wp.exe
   16-May-2003  01:49                   33,522  Installpersistsqlstate.sql
   16-May-2003  01:49                   34,150  Installsqlstate.sql
   18-Sep-2003  05:09  1.1.4322.947     94,208  Perfcounter.dll
   19-Sep-2003  02:43  1.1.4322.947  1,216,512  System.dll
   19-Sep-2003  02:40  1.1.4322.947    323,584  System.runtime.remoting.dll
   19-Sep-2003  02:43  1.1.4322.947  1,253,376  System.web.dll
   19-Sep-2003  02:42  1.1.4322.947    819,200  System.web.mobile.dll
   19-Sep-2003  02:41  1.1.4322.947    569,344  System.web.services.dll
   19-Sep-2003  02:44  1.1.4322.947  1,335,296  System.xml.dll
   18-Sep-2003  05:13                   14,472  Webuivalidation.js

Status

Microsoft ha confermato che questo problema riguarda i prodotti sono elencati nella sezione "Si applica a" di questo articolo.

Informazioni

Questo pacchetto di aggiornamento rapido (hotfix) include anche un hotfix secondario. Se si imposta un oggetto STA che Ŕ stato memorizzato nello stato sessione su null e AspCompat Ŕ impostata su true , potresti ricevere un messaggio di errore "NullReferenceException" quando si ricarica la pagina. Per riprodurre il problema secondario, incollare il codice seguente all'interno di un evento Page_Load .
	Session["obj"] = new Object();

	Session["obj"] = null;
quando si visita la pagina per la prima volta, il codice viene eseguito correttamente. Tuttavia, se si ricarica la pagina, si riceve un messaggio di errore "NullReferenceException" da Microsoft ASP.NET ed Ŕ Impossibile visualizzare la pagina nuovamente nella sessione corrente.

Stack Trace:
[NullReferenceException: Object reference not set to an instance of an object.]
System.Web.UnsafeNativeMethods.AspCompatOnPageStart(Object obj) +0
System.Web.Util.AspCompatApplicationStep.OnPageStartSessionObjects() +90
System.Web.UI.Page.ProcessRequestMain() +44
se AspCompat Ŕ impostata su false , non si verifica questo comportamento.

Procedura per riprodurre il problema.

Per riprodurre il problema che viene visualizzato nella sezione "Sintomi" di questo articolo, attenersi alla seguente procedura:
  1. Utilizzare Microsoft Visual Basic .NET per creare un oggetto DLL ActiveX in Visual Basic.

    Nota Se si seleziona il componente come Esecuzione invisibile all'utente (UE), l'errore si verifica ancora.
  2. Creare due funzioni nella classe DLL :
    1. Creare una funzione che restituisce una stringa.
    2. Creare una funzione che accetta un parametro lungo e che restituisce un valore LONG. Questa funzione esegue un ciclo che vengono aggiunti i numeri da 1 il numero passato alla funzione.
  3. Creare un nuovo progetto Applicazione Web che dispone di due pagine aspx (Page1.aspx e Page2.aspx).
  4. Nel file Global.asax dell'evento Session_Start , utilizzare CreateObject per creare un'istanza dell'oggetto creato nel passaggio 1.
  5. Nell'evento Page_Load di Page1.aspx, chiamare uno delle funzioni creato nel passaggio 2 dall'oggetto che Ŕ memorizzato in stato di sessione.
  6. Creare un collegamento ipertestuale a Page2.aspx in Page1.aspx.
  7. Nell'evento Page_Load di Page2.aspx, chiamare il metodo Session.Abandon .
  8. Utilizzare Application Center Test (ACT) per creare un test che registra il funzionamento di visualizzazione Page1.aspx e quindi visualizzando Page2.aspx.
  9. Eseguire il test con dieci utenti. Visualizzata se errore 0x8004e005 in Event Viewer.

    Nota Potrebbe essere necessario aumentare il numero di utenti a riprodurre il problema.

Riferimenti

Per ulteriori informazioni, fare clic sui numeri degli articoli della Microsoft Knowledge Base riportato di seguito:
243543INFORMAZIONI: Azione memorizzare STA oggetti Session o Application
243815PRB: Archiviazione di componenti COM STA in una sessione di blocco sessione gi¨ a thread singolo
817005FIX: Gravi problemi di prestazioni quando Ŕ possibile associare stato sessione ai thread in modalitÓ ASPCompat

ProprietÓ

Identificativo articolo: 827164 - Ultima modifica: mercoledý 26 febbraio 2014 - Revisione: 1.7
Le informazioni in questo articolo si applicano a:
  • Microsoft .NET Framework 1.1
  • Microsoft Visual Studio .NET 2003 Enterprise Architect
  • Microsoft Visual Studio .NET 2003 Enterprise Developer
  • Microsoft Visual Studio .NET 2003 Academic Edition
  • Microsoft ASP.NET 1.1
Chiavi:á
kbnosurvey kbarchive kbmt kbhotfixserver kbqfe kberrmsg kbnetframe100presp3fix kbfix kbqfe kbcode kbbug KB827164 KbMtit
Traduzione automatica articoli
Il presente articolo Ŕ stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non Ŕ sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, pi¨ o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non Ŕ la sua. Microsoft non Ŕ responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 827164
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com