2010-02-04 14 views
5

Questo mi fa impazzire. Ho implementato questo servizio web w/C# usando VS 2008. Lo pubblico su IIS. Ho modificato la versione di rilascio in modo che i file pdb vengano copiati insieme alle DLL nella directory di destinazione su inetpub.Manca il numero di riga nella traccia dello stack anche se i file PDB sono inclusi

Anche il file web.config ha debug = true.

Quindi chiamo un servizio Web che genera un'eccezione. La traccia dello stack non contiene i numeri di riga. Non ho idea di cosa mi manca qui, qualche idea?

Informazione supplementare: Se corro il web app utilizzando VS web server integrato, funziona e ottengo numeri di riga nella traccia dello stack. Ma se copio gli stessi file (pdb e dll) che il server Web incorporato VS sta utilizzando per IIS, i numeri di riga sono ancora mancanti nella traccia dello stack.

Sembra che ci sia qualcosa di simile a IIS che ignora i file pdb!

Aggiornamento Quando pubblico su IIS, tutti i file pdb sono pubblicati sotto la directory bin e tutto sembra a posto. Ma quando vado in "C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ Temporary ASP.NET Files" sotto la directory specifica relativa al mio progetto, posso vedere che i file assembly (.dll) sono tutti lì , ma non ci sono file pdb. Ma questo non accade se eseguo il progetto usando il server web integrato VS. Quindi se copio manualmente i file pdb nella cartella temp, posso vedere i numeri di riga.

Qualche idea sul perché i file pdb non vengono copiati nella cartella temporanea?

BTW, quando collego al processo di lavoro, posso vedere che dice Simboli caricati!

+0

stai usando WCF per chiamare quel servizio web? –

+0

No, è il servizio Web asmx – kaptan

+0

possibile duplicato di [IIS che non fornisce i numeri di riga nello stack trace anche se pdb è presente] (http://stackoverflow.com/questions/2673623/iis-not-giving-line-numbers-in- stack-trace-even-though-pdb-present) –

risposta

0

Forse il server si sta pubblicando per l'impostazione ha <deployment retail="true" /> configurata nel file system machine.config in:

C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG

Per maggiori informazioni visita:

ASP.NET configuration - deployment Element (ASP.NET Settings Schema)

Solo un pensiero.

+0

ho controllato quel file e non c'è in quel file. – kaptan

+0

In un commento nel post collegato sopra http://stackoverflow.com/questions/2673623/iis-not-giving-line-numbers-in-stack-trace-even-though-pdb-present/2673642#2673642, utente @Graeme dice che se lo fai, disattiva completamente la traccia dello stack, non solo i numeri di riga. I file –

0

Collegare al processo di lavoro utilizzando VS o windbg e vedere se è in grado di trovare il tuo pdb e se corrisponde al tuo assemblaggio?

Un altro motivo comune è che si stanno effettivamente utilizzando le DLL di rilascio [che sono ottimizzate]. Dubito che sia qualcosa di specifico da fare con IIS.

+0

.pdb possono essere utilizzati con "Rilascio" o dll ottimizzati senza problemi. L'ho fatto molte volte. –

0

Assicurati di impostare "debug = true" nel web.config, senza di esso, i numeri di riga non vengono visualizzati nelle eccezioni.

+0

è già lì – kaptan

0

Non sono sicuro se questo aiuterà, ma nei miei VS2008 proprietà C# progetto, sotto la scheda di compilazione, c'è un pulsante Avanzate in cui ho dovuto impostare informazioni di debug a "pieno" o "PDB-only"

1

I aveva questo stesso problema e ha provato tutto sotto il sole per cercare di risolvere il problema.Nulla ha funzionato finché non ho trovato la risposta accettata in questa domanda simile: IIS not giving line numbers in stack trace even though pdb present.

Risulta utilizzando la rappresentazione con web.config:

<identity impersonate="true" /> 

provoca la perdita dei numeri di riga StackTrace. Ho ritirato la voce e sono stati restituiti i numeri di riga, reinseriti e dopo alcune ore (aggiornamento del ticket Kerberos?) I numeri di riga sono scomparsi nuovamente.

Non certo perché la rappresentazione riguarda l'analisi dello stack, ma lo fa - sarebbe felice di avere qualcuno confermare/spiegare questo ...

devo impersonare per essere acceso per la maggior parte dei miei siti (e di quelli i siti hanno numeri di linea, vai a capire) quindi l'ho disabilitato per questo particolare sito e ho ottenuto i miei numeri di linea !!

+1

Questa è l'unica soluzione che ha funzionato per me. Spero che "impersonate = true" non sia qualcosa di cui i miei siti hanno bisogno. – Arvin

Problemi correlati