2016-04-05 23 views
8

Ho eseguito un sito Web C# MVC scritto su C# per un tempo piuttosto lungo. Recentemente, ho notato questo messaggio My Data Logger:IOException: il nome della rete non è stato trovato

System.IO.IOException: The network name cannot be found. 

    at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) 
    at System.IO.FileSystemEnumerableIterator`1.CommonInit() 
    at System.IO.FileSystemEnumerableIterator`1..ctor(String path, String originalUserPath, String searchPattern, SearchOption searchOption, SearchResultHandler`1 resultHandler, Boolean checkHost) 
    at System.IO.Directory.EnumerateFiles(String path) 
    at System.Web.WebPages.Deployment.WebPagesDeployment.AppRootContainsWebPagesFile(String path) 
    at System.Web.WebPages.Deployment.PreApplicationStartCode.OnChanged(String key, Object value, CacheItemRemovedReason reason) 
    at System.Web.Caching.CacheEntry.CallCacheItemRemovedCallback(CacheItemRemovedCallback callback, CacheItemRemovedReason reason) 

so anche:

  1. Questa eccezione viene generata dal file ASP.global_asax.
  2. Questo accade per una volta in poche settimane. Ma, quando succede, vedo questa eccezione per alcune volte nel mio logger (ritardo di un secondo tra ogni eccezione).

Come si può vedere, nulla in questo stack di chiamate è nel mio codice. Pertanto, non so come riproporlo o risolvere questo.

Come mi consigliate per risolvere questo? Qualsiasi suggerimento sarà utile.

+0

Sembra che qualcosa in un file di configurazione stia puntando a un percorso di rete. I percorsi SMB sono talvolta soggetti a non essere disponibili per alcuni secondi. Fa tutto per "//". – usr

+0

Controlla il tuo codice per i luoghi in cui esegui il "lancio". le probabilità sono che qualcuno abbia fatto una "eccezione di lancio" che toglie la traccia dello stack. sostituire con "throw" da solo e questo dovrebbe almeno ottenere una traccia stack completa per lavorare con la prossima volta che succede. Informazioni su "throw" vs "throw ex" trovato in questa risposta: https://stackoverflow.com/questions/2728640/what-does-throw-by-itself-do – user7396598

+0

Potresti essere in grado di condividere il tuo codice global.asax ? –

risposta

-4

la rete è probabilmente inattivo è possibile risolvere questo semplicemente aggiungendo un fermo per catturare questa eccezione e visualizzare un messaggio che l'host del nome della rete è inattivo e dovrebbe risolvere il problema di rete prima di tentare qualunque cosa tu stia facendo ancora.

+1

questo dovrebbe essere nel commento –

+2

Non chiaro. La rete è giù, sono d'accordo. Ma non riesco a individuare da dove provenga questa eccezione. Forse sai come individuare questo codice problematico? Nessun suggerimento in Call-Stack. – No1Lives4Ever

3

Guardando allo source code, questa eccezione viene attivata dal framework stesso.

Prova a enumerare tutti i file nello HttpRuntime.AppDomainAppPath. Sembra che questo percorso non sia sempre disponibile nel tuo scenario, il che sembra un po 'strano. Dove stai ospitando i tuoi file?

Ti suggerisco di registrare il valore di HttpRuntime.AppDomainAppPath e cercare da lì. Penso che sarà un valore piuttosto insolito ...

+1

Stiamo ospitando l'app su un servizio app di Azure. Immagino che sia possibilmente un problema interno con le loro VM. –

+0

Oppure il sito di Azure sta "andando a dormire" come questa domanda: https://stackoverflow.com/questions/33789895/how-to-prevent-an-azure-website-from-going-to-sleep – smoore4

+0

@ smoore4 It non sembra che questo potrebbe causare il filepath per essere non disponibile? –