Je pense que vous avez deux problèmes:
- Vous ne devriez probablement pas utiliser
<asp:Label>
pour la chose que vous êtes Faire. Essayez plutôt <asp:Literal>
ou donnez-nous plus d'informations sur la raison pour laquelle vous utilisez une étiquette et ce que vous voulez accomplir (visuellement, ou en termes HTML).
- Vous devez construire votre chaîne avec
System.Text.StringBuilder
et ne pas concaténer avec +=
. Cela améliorera les performances et réduira l'utilisation de la mémoire, mais comme votre exception semble se produire sur label.Text = str;
, le remplacement de la concaténation par StringBuilder
ne résoudra pas le problème.
Supposons que vous avez ce balisage ASP.NET:
<asp:Label id="MyLabel" runat="server" />
et ce C# behind:
string str = String.Empty;
str += "Some text "
str += "some more text";
MyLabel.Text = str;
Essayez de remplacer ces deux avec:
<asp:Literal id="MyLiteral" runat="server" />
et
StringBuilder sb = new StringBuilder();
sb.Append("Some text ");
sb.Append("some more text");
MyLiteral.Text = sb.ToString();
Une autre option consiste à écrire directement dans le flux de sortie avec Response.Write()
. Sans savoir exactement ce que vous essayez d'accomplir et pourquoi vous avez une si grande chaîne que vous finissez avec un OutOfMemoryException
, il est difficile de vous aider plus loin que cela, j'en ai peur.
Cette ligne unique semble très bien. Veuillez fournir un exemple * complet *. Prenez votre programme, * retirez-en autant que possible *, puis publiez le * plus petit programme complet * reproduisant l'erreur que vous voyez. – Heinzi
désolé je ne peux pas poster le code.Posting peut créer un problème pour moi .......... – Vikky
Y at-il une chance d'une boucle infinie quelque part? – CyberDude