2010-07-12 5 views
4

Nous recevons cette exception InternalSubStringWithChecks avec healthMonitoring de notre application.Exception InternalSubStringWithChecks

Cette exception est similaire à l'exception Padding is invalid et ne peut pas être supprimée à l'endroit où elle est enregistrée et nous recevons un e-mail de notification, mais l'utilisateur final ne sait pas qu'une erreur s'est produite. Bien que nous ne voulons pas que notre journal des événements soit rempli de ces ordures!

La trace de la pile est:

Event message: System.ArgumentOutOfRangeException: Length cannot be less than zero. 
Parameter name: length 
    at System.String.InternalSubStringWithChecks(Int32 startIndex, Int32 length, Boolean fAlwaysCopy) 
    at System.Web.Handlers.AssemblyResourceLoader.System.Web.IHttpHandler.ProcessRequest(HttpContext context) 
    at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 
    at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) 

Je ne peux pas trouver des informations utiles sur les causes de cela et comment y remédier via Google. Est-ce que quelqu'un d'autre a rencontré/réparé cela?

+0

Quand cela se produit-il dans le cycle de vie de la page asp.net? –

+0

@mohlsen - Nous ne savons pas, tout ce que nous avons, c'est cette trace de pile à travailler. –

Répondre

2

Vous appelez la méthode Substring() avec des arguments incorrects. Par exemple:

string a = "test"; 

a.Substring(0,100) 

lèvera une exception.

+0

Voir la trace de la pile fournie, il n'a pas appelé 'Substring()' – Fedor

+2

@Fedor, il l'a fait. Vous pouvez voir InternalSubStringWithChecks qui est utilisé par la fonction Substring(). – Skami

+0

@Skami Oui, vous avez raison. J'ai eu le même problème et il s'est avéré que, IIRC, ASP.NET appelé en interne 'Substring()' pendant le chargement de la page. Malheureusement, je ne me souviens pas de la cause de cette erreur, mais je l'ai réparée d'une manière ou d'une autre. – Fedor