Risoluzione dei problemi di autorizzazioni più comuni e i problemi di protezione in ASP.NET

Colonna ASP.NET Support Voice

Risoluzione dei problemi di autorizzazioni più comuni e i problemi di protezione in Microsoft ASP.NET

Per personalizzare questa colonna in base alle esigenze, desideriamo invitati a inviare le proprie idee sugli argomenti che sono interessano e problemi che si desidera vedere soluzione nei futuri articoli della Knowledge Base e le colonne di Support Voice. È possibile inviare idee e commenti e suggerimenti tramite il modulo Ask For It . È inoltre disponibile un collegamento al modulo nella parte inferiore della colonna.
Hello, si tratta di Vignesh g dal team di ASP.NET. Benvenuti alla colonna di ASP.NET Support Voice. Ero un tecnico dell'assistenza per gli sviluppatori per oltre due anni ora presso Microsoft e ho Ho trascorso il tempo di messa a fuoco su ASP.NET e Microsoft Internet Information Services (IIS).

L'obiettivo di questa colonna non sarà per spiegare la protezione ASP.NET, ma per delineare alcune tecniche di risoluzione dei problemi e suggerimenti utili per isolare e risolvere alcune autorizzazioni comuni e scenari di protezione che vediamo qui in PSS. Le autorizzazioni e i problemi di protezione in ASP.NET sono ben documentati. Infatti, vi sarà una serie di persone che hanno riscontrato lo stesso problema precedentemente. In questo caso, l'intento è per questa colonna per essere un ottimo strumento per trovare informazioni pertinenti e completa sulla protezione ASP.NET. Non è sensazione migliore rispetto a se stessi la risoluzione del problema.

Strumenti utili

Prima di tentare di correggere tutto ciò che viene interrotto, è necessario acquisire familiarità con alcuni strumenti che consentono di circoscrivere il problema. Nel nostro caso, ci sarebbero interessati in strumenti come FileMon e RegMon con, il controllo della protezione. Per ulteriori informazioni su FileMon, visitare il seguente sito Web Microsoft:Per ulteriori informazioni su RegMon, visitare il seguente sito Web Microsoft:

Il drill-down per isolare il problema

  • L'applicazione ha funzionato mai? Se Sì, quindi le modifiche che potrebbero state l'interruzione dell'applicazione? È possibile che siano stati applicati gli aggiornamenti software o aggiornamenti di protezione sul server. Un'implementazione di codice potrebbe inoltre hanno causato il problema.
  • Pagine HTML e ASP semplice essere utilizzati da IIS?
  • L'applicazione è stato spostato su una versione diversa di IIS?
  • Eseguire altre applicazioni ASP.NET in caso di guasto del server con lo stesso errore? È l'unica applicazione che ha esito negativo?
  • Il problema si verifica per tutti gli utenti o per utenti specifici solo?
  • Il problema riproducibile durante l'esplorazione localmente sul server Web o è riproducibile per soltanto alcuni client?
  • Se si utilizza la rappresentazione, quindi l'utente rappresentato dispone di accesso necessari alla risorsa?
Queste domande sono utili per diagnosticare un problema. Se si sta registrando il problema in uno dei forum di ASP.NET e se hai già le risposte alla maggior parte di queste domande, è probabile che si otterrà un puntatore rapido o una soluzione al problema. È necessario registrare l'errore di analisi dello stack ASP.NET intera, se del caso, invece di "ricevo un errore di accesso negato durante l'esecuzione dell'applicazione ASP.NET. Chiunque consentono?" È molto più semplice per un utente visualizzare la traccia dello stack e fornire puntatori quando possono vedere un messaggio di errore completo. È necessario porsi...

Qual è il messaggio di errore esatto?

È la prima domanda che è necessario che i clienti, "Qual è il messaggio di errore esatto?" Se si dispone di una descrizione precisa del messaggio di errore generata di Microsoft.NET Framework, è possibile ignorare questa sezione. Se l'applicazione viene mascherato il messaggio di errore effettivo e offre un messaggio di errore descrittivo, ad esempio, "si è verificato un errore imprevisto. Contattare l'amministratore del sito per informazioni dettagliate,"è molto utile per tutti gli utenti. Eccone alcuni passaggi che ti consentiranno di ottenere il messaggio di errore effettivo.
  • Individuare e aprire il file Web. config nella directory dell'applicazione e impostare customErrors in modalità = "Off". Salvare il file e riprodurre il problema.
  • Comunque potrebbe non essere possibile visualizzare il messaggio di errore effettivo dopo il passaggio sopra gestione eventi/errori personalizzata eseguita dallo sviluppatore dell'applicazione. È possibile tentare di individuare l'evento Application_Errorin Global. asax e commento il codice che utilizza il
    Funzione Server.Transfer("Errors.aspx") per passare a una pagina di errore personalizzato.
/Global.asax void Application_Error(object sender, EventArgs e) 
{
// Code that runs when an unhandled error occurs
//Server.Transfer("Errors.aspx");

}

Dopo aver visualizzato il messaggio di errore effettivo, letto per determinare se l'errore è causato da autorizzazioni mancanti su una risorsa locale o su una risorsa remota che tenta di accedere all'applicazione ASP.NET.

Suggerimento È possibile contattare il developer per scoprire come fare visualizzare il messaggio di errore effettivo. È possibile che il developer possono essere la registrazione in un file o ottenere notifiche tramite posta elettronica. Ricordarsi di eseguire un backup di qualsiasi file che si desidera modificare. Con una copia di backup disponibile, è possibile sempre il rollback delle modifiche.

Si verifica a causa di mancanza delle autorizzazioni necessarie su una risorsa locale che l'applicazione ASP.NET tenta di accedere a

Se non si riesce a ottenere una descrizione precisa del problema a causa di un messaggio di errore personalizzato, eseguire FileMon e riprodurre il problema. Interrompere e salvare l'acquisizione come FileMon.xls e aprire il file in Microsoft Excel. Dal menu dati , fare clic su filtroe quindi fare clic su Filtro automatico per utilizzare le funzionalità di filtro di Excel. Selezionare nell'elenco a discesa nella colonna F e cercare errori "Accesso negato".

Seguito è riportato un esempio di output di FileMon.
10381 1:01:11 PM w3wp.exe:2320 OPENC:\winnt\microsoft.net\framework\v1.1.4322\Temporary ASP.NET
Files\sessiontest\8832e585\275ec327\global.asax.xml ACCESS DENIED NT
AUTHORITY\NETWORK SERVICE
Come si vede dai risultati filtrati, ci abbiamo ristretto la causa del problema. FileMon mostra che l'account NT AUTHORITY\NETWORK SERVICE mancano le autorizzazioni NTFS sulla cartella file di ASP.NET C:\Winnt\Microsoft.net\Framework\v1.1.4322\Temporary. Deve essere semplice da correggere.
Per ulteriori informazioni sull'utilizzo di FileMon per risolvere i problemi di ASP.NET, fare clic sul numero riportato di seguito per visualizzare l'articolo della Microsoft Knowledge Base:

ASP.NET 890960 risoluzione dei problemi utilizzando FileMon

Tip Un buon punto, è possibile modificare l'account di processo ASP.NET a un account di amministratore per vedere se risolve il problema. In IIS 5. x si modificherebbe il
nome utente per "Sistema" nella sezione modello di processo del file Machine. config e in IIS 6.0 si modificherebbe l'identità IIS AppPool "Sistema locale" per vedere se l'applicazione funziona.

Nota: Questo non deve essere utilizzato come una soluzione, ma solo come un passaggio di risoluzione dei problemi.

Molte persone tenderebbe per reinstallare il Microsoft.NET Framework o anche l'estensione della reinstallazione del sistema operativo. Questo non è una procedura consigliata e non garantisce che il problema sarà non si ripresenta. Fornirò un esempio. Problemi intermittenti sono spesso difficili da isolare e risolvere i problemi. In questo scenario dell'applicazione del cliente dovrebbe funzionare per alcune ore e quindi all'improvviso esso non con l'errore riportato di seguito. Il cliente aveva già provato a reinstallare il.NET Framework, così come il sistema operativo. Quindi riapparso sembrava per risolvere il problema per alcuni giorni.

Server Error in '/MyApp' Application

Eseguito FileMon non è comparso eventuali errori di accesso negato. Tutte le autorizzazioni necessarie per l'account ASPNET erano in vigore. L'unico modo per risolvere il problema consiste nel riavviare la casella. Non è necessaria anche una reimpostazione IIS. Pensare "Ah, il Software Microsoft necessita sempre di un riavvio per il ripristino?" Bene, si è sbagliata!

La chiave qui è di esaminare il messaggio di errore. L'errore afferma chiaramente "Impossibile aprire un file per la scrittura," e non il consueto errore accesso negato, in modo che Sto pensando che si tratta di un altro processo, che mantiene un file o una cartella non consente di ASP.NET per la scrittura. È opportuno che il riavvio è stato abbattimento altro processo e l'applicazione ASP.NET inizia a lavorare nuovamente finché il processo blocca il file nuovo. L'operazione logica da eseguire, è possibile disattivare tutti i programmi antivirus, spyware di terze parti o qualsiasi altro file di software che viene eseguito sul server di monitoraggio. Non si desidera evidenziare qualsiasi software di terze parti specifico. Tuttavia, in generale, il software antivirus notoriamente causano molto complicato per le applicazioni di IIS e ASP.NET. Un altro problema noto causato dal software antivirus è sessione perdite AppDomain Ricicla quando vengono toccati cartella Bin o i file config.

Suggerimento Per disattivare i servizi di terze parti in modo semplice consiste nel:
  1. Fare clic su Start, scegliere Eseguie quindi digitare msconfig.
  2. Selezionare servizi e selezionare Nascondi tutti i servizi Microsoft.
  3. Fare clic su Disabilita tutto per arrestare i servizi di terze parti.
  4. Fare clic su Start, scegliere Eseguie quindi digitare iisresetper ricaricare il CLR nel processo di lavoro.
Monitorare l'applicazione per vedere se il problema si ripresenta. Se si eseguono più programmi antivirus, utilizzare il metodo di valutazione e di errore per determinare il programma specifico che causa il problema.

Nota: Se lo stesso errore riproducibile al 100% del tempo, il software antivirus potrebbe non essere la causa. Possono essere presenti altre cause di questo errore. Provare a creare una semplice applicazione di test ASP.NET per capire se lo stesso errore si verifica per una pagina di test. aspx. In caso affermativo, verificare che il required Access Control Lists (ACLs) sono in posizione per ASP.NET.

Vedere ASP.NET necessarie Access Control Lists (ACLs):
http://msdn2.microsoft.com/en-us/library/kwzs111e.aspx

Suggerimento La cartella %SystemRoot%\Assembly è la global assembly cache. Per modificare gli ACL per questa cartella, è possibile utilizzare direttamente Esplora risorse. Invece utilizzare un prompt dei comandi ed eseguire il comando seguente:
cacls %windir%\assembly /e /t /p domain\useraccount:r
In alternativa, prima di utilizzare Esplora risorse di Windows, annullare la registrazione di Shfusion. dll con il comando seguente per concedere le autorizzazioni mediante la GUI:
C:\WINDOWS\Microsoft.NET\Framework\VersionNumber>regsvr32–u shfusion.dll
Dopo aver impostato le autorizzazioni con Esplora risorse, registrare nuovamente Shfusion. dll con il comando seguente:
C:\WINDOWS\Microsoft.NET\Framework\VersionNumber>regsvr32 shfusion.dll

Si verifica a causa di mancanza delle autorizzazioni necessarie su una risorsa remota che tenta di accedere all'applicazione ASP.NET

Quando l'applicazione ASP.NET accede a una risorsa remota, quale Microsoft SQL Server o una condivisione Universal Naming Convention (UNC), esistono molte cose che possono andare storto. Inoltre, molte operazioni possono essere erroneamente di sulla risorsa remota. È necessario risolvere tali problemi per ottenere il lavoro della risorsa. Per ulteriori informazioni, fare clic sul numero riportato di seguito per visualizzare l'articolo della Microsoft Knowledge Base:

891031 comuni problemi di protezione quando si accede a risorse remote da applicazioni ASP.NET

Il primo passaggio, è possibile verificare se è possibile connettersi al server remoto tramite Esplora risorse.
  1. Il server remoto, creare una cartella denominata Test. Nella scheda condivisione e protezione della cartella di prova, aggiungere/account di dominio e account di processo che viene utilizzato dall'applicazione ASP.NET e assegnare loro controllo sia completo.

    Nota: Vedere891031 per le tecniche e le soluzioni alternative per accedere a risorse remote da ASP.NET.
  2. Sul server IIS, accedere con il dominio/account, fare clic su Start, scegliere Eseguie quindi digitare il percorso UNC della condivisione del server remoto:
    \\RemoteServerName\Test
    Se in grado di accedere a questa cartella, quindi contattare l'amministratore di rete per risolvere il problema. Solo quindi possibile accedere alla condivisione in un'applicazione ASP.NET.
  3. Creare un file denominato CreateUNCFile.aspx con il codice riportato di seguito e salvare il file nella directory dell'applicazione.
    <%@ Page Language="vb" %><%@ Import Namespace="System.IO" %>
    <html>
    <head>
    <title>Writing to a Text File</title>
    <script runat="server">
    Sub WriteToFile(ByVal sender As System.Object, ByVal e As System.EventArgs)
    Dim fp As StreamWriter
    fp = File.CreateText("\\<RemoteServerName>\Test\" & "test.txt")
    fp.WriteLine(txtMyFile.Text)
    lblStatus.Text = "The File Successfully created! Your ASP.NET process is able to access this remote share"
    fp.Close()
    End Sub
    </script>

    </head>
    <body style="font: 10pt verdana">
    <h3 align="center">Creating a Text File in ASP.NET</h3>
    <form id="Form1" method="post" runat="server">
    Type your text:
    <asp:TextBox ID="txtMyFile" TextMode="MultiLine" Rows="10" Columns="60" Runat="server" /><br>
    <asp:button ID="btnSubmit" Text="Create File" OnClick="WriteToFile" Runat="server" />
    <asp:Label ID="lblStatus" Font-Bold="True" ForeColor="#ff0000" Runat="server" />
    </form>
    </body>
    </html>

  4. Assicurarsi che la seguente riga di codice modificare < RemoteServerName >
    fp = File.CreateText("\\<RemoteServerName>\Test\" &"test.txt")
    in modo che rifletta il nome del server remoto.
  5. Aprire Windows Internet Explorer e passare a http://NomeServerIIS/ /CreateUNCFile.aspxAppNameda un computer diverso dal server IIS.
  6. Se il file test. txt viene creato correttamente, può autenticare l'applicazione ASP.NET alla risorsa remota.
  7. Se la creazione di file da un browser client Internet Explorer invece funziona se si passa alla stessa pagina dal server IIS, è probabile che siano in esecuzione in uno scenario di "Doppio Hop". Se si utilizza l'accesso remoto alle risorse che richiedono l'autenticazione e autorizzazione personalizzata incorporata di Web part, eseguirà probabilmente un problema "Double Hop". Per accedere alle risorse remote, è necessario fornire le credenziali dell'utente finale per la risorsa in modo che l'output della risorsa è limitato ai dati che l'utente finale ha diritto di accesso.
La procedura si suppone che l'autenticazione NTLM attivata in IIS. Autenticazione di base non utilizza Kerberos.
Per ulteriori informazioni, fare clic sul seguente numero di articolo per visualizzare l'articolo della Microsoft Knowledge Base:

Autenticazione Kerberos e la risoluzione dei problemi di delega 907272

326985 come risolvere i problemi relativi a Kerberos in IIS

Per ulteriori informazioni sui metodi di autenticazione IIS, vedere il seguente sito Web Microsoft Developer Network (MSDN):

Suggerimento Se è possibile connettersi alla condivisione UNC remoto ma non è possibile connettersi al server remoto che esegue SQL Server dall'applicazione ASP.NET, è necessario verificare o impostare i nomi dell'entità servizio (SPN) per SQL Server. Provare ad attivare solo l'autenticazione di base per l'applicazione in IIS e vedere se in grado di connettersi al server remoto che esegue SQL Server.
Per ulteriori informazioni, fare clic sul seguente numero di articolo per visualizzare l'articolo della Microsoft Knowledge Base:

319723 come utilizzare l'autenticazione Kerberos in SQL Server

316989 messaggio di errore quando si crea una connessione dati attendibile da ASP.NET a SQL Server: "accesso non riuscito per l'utente:"NomeAccount""

Suggerimento È consigliabile non per utilizzare unità mappate per connettersi a una risorsa remota perché i mapping delle unità sono un'estensione del comando net use e vengono creati in base all'utente. Il metodo consigliato per accedere al contenuto del server Web esistente in un computer remoto consiste nell'utilizzare le condivisioni che seguono il percorso UNC. Per ulteriori informazioni, fare clic sul numero riportato di seguito per visualizzare l'articolo della Microsoft Knowledge Base:

257174 utilizzo connesse con IIS

Problema correlato (CAS, Code Access Security)

Messaggi di errore in ASP.NET sono dettagliati e, molto spesso, infatti, indicano il esattamente il problema. In alcuni casi, FileMon o RegMon possono acquisire qualcosa di utile. Diamo un'occhiata a uno di questi scenari.

Scenario

Durante il tentativo di individuare un'applicazione ASP.NET, non riesce con un errore generico, ad esempio il seguente errore gravissimo:
Server Application Unavailable
Mostra il registro eventi:

Tipo di evento: errore
Origine evento: ASP.NET 1.1.4322.0
Categoria evento: nessuno
ID evento: 1088
Data: 11/10/2006
Ora: 10:54:04 PM
Utente: n/d
Computer: nomecomputer
Descrizione:
Errore di esecuzione richiesta perché Impossibile creare il dominio dell'applicazione. Errore: 0x8013150a
Quando viene creato un dominio di applicazione ASP.NET, ASP.NET legge il valore specificato per l'attributo a livello di elemento di configurazione trust, viene creata un'istanza della classe AspNetHostingPermission con l'oggetto specificato
Livello di attributo, e quindi la classe viene aggiunta al set di autorizzazioni per il dominio applicazione. Se i livelli di attendibilità sono correttamente configurati o modificati verrà visualizzato l'errore riportato sopra. Per ulteriori informazioni, vedere "ASP.NET Trust livelli e file di criteri" sul seguente sito Web MSDN:Per risolvere questo problema, è possibile provare questo Suggerimento nella sezione "Problema si verifica a causa di mancanza delle autorizzazioni necessarie su una risorsa locale che l'applicazione ASP.NET tenta di accedere a", ma non si ottiene disheartened se l'applicazione non funziona con un account amministratore o sistema. È necessario verificare se il problema può essere causato da Code Access Security. Può facilmente ciò disattivando la protezione dall'accesso di codice utilizzando l'utilità Caspol.exe.
C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322 >caspol -s off,
Microsoft (R).NET Framework CasPol 1.1.4322.573
Copyright (C) Microsoft Corporation 1998-2002. Tutti i diritti riservati.


Operazione riuscita

C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322>
Dopo aver eseguitocaspol-s off, reimpostare IIS e provare a esplorare l'applicazione. Se questa operazione funziona, è necessario controllare il set di autorizzazioni per i gruppi di codice. È possibile accedere ai gruppi di codice nello strumento di configurazione di Microsoft.NET Framework VersionNumberche si trova in strumenti di amministrazione.

In questo scenario, il Set di autorizzazioni per il gruppo di codice My_Computer_Zone viene impostato su Nothing. La modifica di Attendibilità ha risolto il problema

Nota: Per accedere al gruppo di codice My_Computer_Zone , attenersi alla seguente procedura:
  1. Nel Pannello di controllo fare doppio clic su Strumenti di amministrazione.
  2. Fare doppio clic su configurazione di Microsoft.NET Framework VersionNumber .
  3. Fare doppio clic su criteri di protezione Runtime.
  4. Fare doppio clic sul computer.
  5. Fare doppio clic su gruppi di codice.
  6. Fare doppio clic su All_Code.
  7. Fare doppio clic su My_Computer_Zone.
Suggerimento Ricordarsi di eseguire caspol-s su per attivare le CA dopo aver risolto il problema.

Per ulteriori informazioni, vedere protezione dall'accesso di codice ASP.NET:
http://msdn2.microsoft.com/en-us/library/87x8e4d1.aspx

Esistono numerose altre cause del messaggio di errore "Applicazione Server non disponibile". Il log eventi è la soluzione migliore per ottenere ulteriori dettagli sulle cause del problema.

Errori correlati a IIS

I registri di IIS sono molto utili in caso di errori relativi all'autenticazione IIS. Uno scenario comune è quando l'utente in genere presente la seguente:
You are not authorized to view this page
È necessario cercare sia i codici di stato dello stato e sub per questo particolare errore.
12-10-2006 22:47:28 W3SVC1 ottenere 65.52.18.230 /MyAPP/login.aspx - 80
Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.2;+SV1;+.NET+CLR+1.1.4322;+.NET+CLR+2.0.50727;+InfoPath.1) \UserID_91 65.52.22.58 MyDomain401 3 5
Vediamo un 401 con lo stato secondario 3, che indica "Non autorizzato accesso".

Indica le autorizzazioni NTFS mancanti su un file o cartella. Questo errore può verificarsi anche se le autorizzazioni siano corrette per il file che si sta tentando di accedere, ma i diritti utente e le autorizzazioni predefinite possono essere mancanti in altre cartelle di sistema e IIS. Ad esempio, potrebbe essere visualizzato questo errore se l'account IUSR_nomecomputer non ha accesso alla directory c:\WINNT\system32\inetsrv.. Per ulteriori informazioni sui codici di stato IIS, fare clic sul numero riportato di seguito per visualizzare l'articolo della Microsoft Knowledge Base:

Codici di stato 318380 descrizione di Microsoft Internet Information Services (IIS) 5.0 e 6.0

Autorizzazioni e diritti utente per IIS 6.0 812614

271071 sull'impostazione delle autorizzazioni NTFS e diritti utente per un server Web IIS 5.0

Suggerimento Fare clic su Start, scegliere Eseguie digitare quindi i file di registro per aprire la cartella che contiene i registri di IIS. In alternativa, nella pagina delle proprietà per il sito Web in IIS, fare clic su di
WebSiteName scheda e in Formato registro attivo, fare clic su proprietà per visualizzare il nome e la directory del file registro.

L'altra operazione di interesse qui è il codice di stato 5. È possibile utilizzare il comando net helpmsg per ottenere ulteriori informazioni su questo codice di stato:
C:\Documents and Settings\nome >net helpmsg 5
Accesso negato.
Provare un altro comune codice di stato, codice 50:
C:\Documents and Settings\nome >net helpmsg 50
La richiesta non è supportata.
Suggerimento Ogni volta che viene visualizzato un altro messaggio "500 Internal Server Error" gravissimo generico, è consigliabile disattivare i messaggi di errore HTTP brevi, in modo da ricevere una descrizione dettagliata dell'errore. Non dimenticare di cercare nel visualizzatore, che potrebbe anche contenere ulteriori informazioni.
Per ulteriori informazioni su come disattivare i messaggi di errore HTTP brevi, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:

294807 disattivare il Internet Explorer 5. x e 6. x "Mostra messaggi HTTP brevi errore" sul lato server

L'idea è di utilizzare tutte le informazioni registrate disponibili per ottenere dettagli massimo portata di mano il problema.

Risorse

Per ulteriori informazioni, fare clic sul seguente numero di articolo per visualizzare l'articolo della Microsoft Knowledge Base:

Cenni preliminari sulla protezione ASP.NET 306590

Identità di processo e richiesta 317012 in ASP.NET

Come creare un account di servizio per un'applicazione ASP.NET 2.0
http://msdn2.microsoft.com/en-us/library/ms998297.aspx

Matrice di identità ASP.NET
http://msdn2.microsoft.com/en-us/library/aa302377.aspx

Articoli precedenti di ASP.NET Support Voice.
http://support.microsoft.com/aspnetpsvc
Mi auguro che queste tecniche semplici sono utili nella risoluzione dei problemi di sicurezza e autorizzazioni correlati. Tenere presente che le colonne di Support Voice sono pensati per voi! Come sempre, non esitate a utilizzare il
Modulo Ask For It per inviare idee sugli argomenti che si desidera vedere presentate negli articoli futuri o nella Knowledge Base.
Proprietà

ID articolo: 910449 - Ultima revisione: 30 gen 2017 - Revisione: 1

Feedback