Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net System.OutOfMemoryException_Asp.net_Vb.net - Fatal编程技术网

Asp.net System.OutOfMemoryException

Asp.net System.OutOfMemoryException,asp.net,vb.net,Asp.net,Vb.net,我正在追加字符串变量文本,在追加一行后抛出System.OutOfMemoryException? 有人能解释为什么它会抛出错误吗 str+="something Text" str+="something Text" 最后,我将其分配给标签文本 当我分配str的值时,它会引发异常….可能您正在尝试连接许多字符串。每次更改/concat字符串时,都会生成一个新字符串,因为字符串是不可变的类型 尝试使用StringBuider获取您的大字符串:) 我认为你有两个问题: 对于正在做的事情

我正在追加字符串变量文本,在追加一行后抛出System.OutOfMemoryException? 有人能解释为什么它会抛出错误吗

 str+="something  Text"

 str+="something  Text"
最后,我将其分配给
标签
文本


当我分配
str
的值时,它会引发异常….

可能您正在尝试连接许多字符串。每次更改/concat字符串时,都会生成一个新字符串,因为字符串是不可变的类型

尝试使用StringBuider获取您的大字符串:)


我认为你有两个问题:

  • 对于正在做的事情,您可能不应该使用
    。请尝试
    ,或者向我们提供更多信息,说明您使用标签的确切原因以及您希望实现的目标(视觉上或HTML术语)
  • 您应该使用
    System.Text.StringBuilder
    构建字符串,而不是将其与
    +=
    连接起来。这将提高性能并减少内存使用,但由于异常似乎发生在
    label.Text=str
    ,仅用
    StringBuilder
    替换串联并不能解决问题
  • 假设您有此ASP.NET标记:

    <asp:Label id="MyLabel" runat="server" />
    
    尝试将这两个选项替换为:

    <asp:Literal id="MyLiteral" runat="server" />
    

    另一个选项是使用
    Response.write()
    直接写入输出流。如果不确切知道您要完成的是什么,以及为什么您有这么大的字符串,最终导致出现
    OutOfMemoryException
    ,恐怕很难为您提供更多帮助。

    这一行看起来不错。请提供一个完整的例子。带上你的程序,尽可能多地删除它,然后发布复制您看到的错误的最小完整程序。抱歉,我无法发布代码。发布可能会给我造成问题…………是否有可能在某个地方出现无限循环?我认为您应该使用
    stringbuilder
    来添加文本……@Vikky:即使您无法实际发布代码,你应该花点时间尽量把它减到最小。如果没有其他问题,它将帮助您确定问题所在。你可能会得到一个足够小的样本,无论什么阻止你发布的东西都会允许它。
    string str = String.Empty;
    str += "Some text "
    str += "some more text";
    MyLabel.Text = str;
    
    <asp:Literal id="MyLiteral" runat="server" />
    
    StringBuilder sb = new StringBuilder();
    sb.Append("Some text ");
    sb.Append("some more text");
    MyLiteral.Text = sb.ToString();