引发类型为“System.OutOfMemoryException”的异常    高手指教!!!!!        [WebMethod]
        public DataTable searchSaleOrder(string _sql)
        {
            db dataBase = new db();
            DataTable ds1 = dataBase.selectResultToTable(_sql);
            return ds1;
        }        [WebMethod]
        public DataSet searchSaleOrder2()
        {
            Sale sa = new Sale();            return sa.SaleOrder();
        }这是两个方法        db database = new db();
        DataSet ds;        private DataTable Sales()
        {
            string sql = "select * from lms_sale_order_master master join lms_sale_order_item item on master.master_id=item.master_id join lms_saleitem_detail detail on item.item_id=detail.item_id ";
            return database.selectResultToTable(sql);
        }
        public DataSet SaleOrder()
        {
            if (ds == null)
            {
                ds = new DataSet();
                ds.Tables.Add(Sales());
            }
            return ds;
        }这个是Sale类里面写的方法
前台有个窗体去调用这个webservice里面的方法,返回语句,进行查询。
以上的代码都是在webservice里面写的。现在报引发类型为“System.OutOfMemoryException”的异常,高手帮忙解决下,说的仔细点,谢谢!!!

解决方案 »

  1.   

     <httpRuntime   executionTimeout="500"   maxRequestLength="100000"   />   WEBCONFIG里加个这个另外你返回的数据有多大?
    如果太大了.建议分页
      

  2.   

    string sql = "select * from lms_sale_order_master master join lms_sale_order_item item on master.master_id=item.master_id join lms_saleitem_detail detail on item.item_id=detail.item_id "; 
                return database.selectResultToTable(sql); 
    返回的是语句,在前台在通过返回来的语句,进行判断,前台有查询的条件
      

  3.   

    我用的是winform,是查询界面,通过选择查询条件,来查询数据的
      

  4.   

    <httpRuntime  executionTimeout="500"  maxRequestLength="100000"  />  WEBCONFIG里加个这个 具体在那个节点下添加啊。说的仔细点呗,谢谢啊
      

  5.   

    string sql = "select * from lms_sale_order_master master join lms_sale_order_item item on master.master_id=item.master_id join lms_saleitem_detail detail on item.item_id=detail.item_id "; 
                return database.selectResultToTable(sql); 
    selectResultToTable这个事已个方法,如下:
     public DataTable selectResultToTable(string sql)
            {
                SqlConnection conn = connection();
                SqlCommand cmd = new SqlCommand(sql, conn);
                SqlDataAdapter oda = new SqlDataAdapter();
                DataSet ds1 = new DataSet();
                oda.SelectCommand = cmd;
                oda.Fill(ds1, "user");
                DataTable dt1 = ds1.Tables["user"];            conn.Dispose();
                conn.Close();
                return dt1;
            }这个方法写在已个类里面,这里面还有连接数据库的方法等
      

  6.   

     <system.web>
            <!-- 
                设置 compilation debug="true" 可将调试符号插入
                已编译的页面中。但由于这会 
                影响性能,因此只在开发过程中将此值 
                设置为 true。
            -->
            <compilation debug="false">          <assemblies>
                <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
                <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
                <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
                <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
              </assemblies>        </compilation>
            <!--
                通过 <authentication> 节可以配置 ASP.NET 用来 
                识别进入用户的
                安全身份验证模式。 
           -->
            <authentication mode="Windows" />
            <!--
                如果在执行请求的过程中出现未处理的错误,
                则通过 <customErrors> 节可以配置相应的处理步骤。具体说来,
                开发人员通过该节可以配置
                要显示的 html 错误页
                以代替错误堆栈跟踪。        <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
                <error statusCode="403" redirect="NoAccess.htm" />
                <error statusCode="404" redirect="FileNotFound.htm" />
            </customErrors>
            -->      <pages>
            <controls>
              <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
              <add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
            </controls>
          </pages>      <httpHandlers>
            <remove verb="*" path="*.asmx"/>
            <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
            <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
            <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/>
          </httpHandlers>
          <httpModules>
            <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
          </httpModules>
        </system.web>这么一堆,具体是哪里啊?
      

  7.   

    在在VS里编辑 WEB.CONFIG 去<system.web> 输入<httpR 后面的就出来了.
      

  8.   

    通过try{}catch{}来主动捕捉OutOfMemoryException异常,发现该异常后直接调用GC.Collect()进行强制垃圾回收。
    资源要释放
    修改machine.config配置文件中的配置节<processModel>的属性memoryLimit
      

  9.   

    通过try{}catch{}来主动捕捉OutOfMemoryException异常,发现该异常后直接调用GC.Collect()进行强制垃圾回收。 
    资源要释放 
    修改machine.config配置文件中的配置节 <processModel>的属性memoryLimit支持此答案
      

  10.   

    如果没有记错webservice里的方法应该是不可以返回DataTable 类型的吧
      

  11.   

    这个属性我已经设置了,属性值给了20
    可还是不行, try{}
                  catch   也用了
      

  12.   

    我是把表先是放在datatable里面,然后在放进 dataset 里面,然后返回到前台,库里面的数据的确很打,但是这样写我觉得是可以实现的,只是现在还是那个具体属性或者什么的,还没设置好,高手请教
      

  13.   

    你在查询分析器中执行你的Sql语句
    select * from lms_sale_order_master master join lms_sale_order_item item on master.master_id=item.master_id join lms_saleitem_detail detail on item.item_id=detail.item_id
    看看需要多久,估计是执行Sql超时了,最好能分页
      

  14.   

    时间是比较长,我也是觉得语句过长,可是这都是必要连接的表,我用的是winform
    如何分页显示?我前台做的是窗体,有一些查询的条件,我是想把语句返回前台,在前台进行条件的筛选,最终查出数据请指教!
      

  15.   

    WINFORM分页和WEBFORM分页有区别吗?
      

  16.   


    不知道啊,怎么分啊?在webservice分?现在是在webservice里面返回那个方法的时候报的错,那个方法里面就放的我那些语句
      

  17.   

    ding  ya  ding