asp.net 读取mssql数据库,提示错误,求指教,附错误及后台代码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了asp.net 读取mssql数据库,提示错误,求指教,附错误及后台代码相关的知识,希望对你有一定的参考价值。

using System;
using System.Data;
using System.Data.SqlClient;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.htmlControls;
namespace qoclist
public class MainDisplay : System.Web.UI.Page
public void Page_Load(System.Object sender, System.EventArgs e)
int ImgID = Convert.ToInt32(Request.QueryString["ImgID"]); //ImgID为图片
SqlConnection Con = new SqlConnection("Data Source=localhost;Initial Catalog=test;User ID=sa;Pwd=sa;");
String SqlCmd = "SELECT * FROM ImageStore WHERE ImageID = @ImageID";
SqlCommand CmdObj = new SqlCommand(SqlCmd, Con);
CmdObj.Parameters.Add("@ImageID", SqlDbType.Int).Value = ImgID;
Con.Open();
SqlDataReader SqlReader = CmdObj.ExecuteReader();
SqlReader.Read();
Response.ContentType = SqlReader["ImageContentType"].ToString();
Response.BinaryWrite((byte[])SqlReader["ImageData"]);
Response.End();
Con.Close();


试试SqlDataReader SqlReader = CmdObj.ExecuteReader();

下面改成

if(SqlReader.Read())
//判断是否读取到数据 
 
Response.ContentType = SqlReader["ImageContentType"].ToString();
Response.BinaryWrite((byte[])SqlReader["ImageData"]);
Response.End();

或者看你的sql语句里是否有这个字段名ImageContentType

参考技术A 是不是你的查询没有查出数据啊,你把查询语句加个断点,然后将它粘贴到sqlserver里面的查询分析器中,然后看看结果。 参考技术B imagecontenttype 的dbnull,null,“”没处理的原因,简单解决就是增加try catch()

asp.net提示System.OutOfMemoryException错误,找不到machine.config文件

asp.net提示System.OutOfMemoryException错误,想修改machine.config。但是.net2.0安装目录没有这个文件,怎么办?与web.congfig文件有关吗?

参考技术A 32位操作系统的寻址空间是4G,其中有2G被操作系统占用,也就是说留给用户进程的内存只有2G(其中还要扣除程序加载时映像占用的部分空间,一般只有1.6G~1.8G左右可以使用)。 如果进程运行中需要申请内存,而操作系统无法为其分配内存空间,则会产生内存不足的异常,在.net中为System.OutOfMemoryException(The exception that is thrown when there is not enough memory tocontinue the execution of a program.)。 虽然最终的表现都为OutOfMemoryException,但其产生的原因可能是不一样的,动手解决此问题之前需要先对进程当前内存的使用状态进行分析,找出正确的原因,才能对症下药。下面分享一下调试此类问题的一些心得。

更多内容请参考:http://blog.csdn.net/lazyleland/article/details/6704661

iis应用程序池 内存溢出错误 System.OutOfMemoryException

在ASP.NET Web服务器上,ASP.NET所能够用到的内存,通常不会等同于所有的内存数量。在machine.config配置文件中,配置节<processModel>中有一个属性“memoryLimit”,这个属性的值是一个百分值,默认为“60”,即指定了ASP.NET进程(在任务管理器中大家就可以看到ASP.NET的进程,IIS5中为aspnet_wp,IIS6中为w3wp)能够使用所有物理内存的60%。当ASP.NET使用的内存量超过这个限额时,IIS会开始自动回收(recycle)进程,即创建一个新的进程去负责应付Http请求,而将旧进程所占用的内存回收。

当我们有一台很大内存的服务器时,“memoryLimit”这个值是需要进行适当的调整的。比如我们准备了一台chemas-microsoft-com ffice marttags" />t="on">4G内存的服务器,那么t="on">4G×60%=t="on">2.4G。但是,对于Win32操作系统,一个进程所能占用的所有内存空间只有t="on">2G。当ASP.NET进程占用的内存开始达到t="on">2G时,由于它并没有达到t="on">2.4G的“回收阈值”,所以IIS不会启动recycle进程操作,但是由于Win32的限制,实际上已经不能给这个进程分配更多的内存了,于是,OutOfMemoryException就很可能会被抛出了。为了避免这样的情况,我们就必须将“memoryLimit”适当调小,以让IIS更早的进行进程回收。

微软推荐的ASP.NET进程占用内存是不超过60%,并最好使计算出的实际值不超过t="on">800M。就是说,对于一台t="on">4G内存的服务器,最好将“memoryLimit”属性设置成“20”。设置一个适当的回收阈值,让IIS适时的进行进程回收,对于保证整个服务器的稳定运行,避免OutOfMemoryException是非常重要的。

在IIS6中,ASP.NET进程的回收阈值不再由配置节中的“memoryLimit”属性决定,而是由IIS管理器中的应用程序池配置中的设置决定。

但是,即使正确设置了这些配置,也不能保证完全避免OutOfMemoryException的发生,原因可能是多样而复杂的,比如内存回收操作可能耗时太多等等。开发人员要注意的,就是在代码中时刻牢记不要无谓的使用和浪费内存。:)

如果你有一台大内存的服务器,同时对Win32操作系统中对于进程最高使用t="on">2G内存的限制很郁闷,可选的解决方法有两个:
1.使用/3GB模式启动计算机,方法参加文后的链接
2.使用Windows Server 2003 64bits Edition

避免内存溢出的几点要素

如果要创建数组,请确保其大小正确。

确保有足够的内存用于内部用途和新的托管对象。

如果您正在 .NET Compact Framework 上进行编程,当没有足够的内存可用于内部用途或新的托管对象时,公共语言运行库会引发此异常。要避免此异常,应避免编写占用 64KB 或更多内存的大方法。

过多的托管内存使用量通常由以下因素造成:
1.将大型数据集读入内存中。
2.创建过多的缓存条目。
3.上载或下载大文件。
4.在分析文件时过多地使用正则表达式或字符串。
5.过多的视图状态。
6.会话状态中有过多的数据或者会话过多。
7.当对 COM 对象调用一个方法,并且该方法返回包含安全数组(大小不固定的数组)的用户定义类型时,可能引发此异常,并附带一条额外的消息“存储空间不足,无法完成此操作”。这是因为 .NET Framework 无法封送带有安全数组类型的结构字段。

一种不当使用字节数组导致内存溢出的情况举例
public partial class _Default : System.Web.UI.Page


protected void Page_Load(object sender, EventArgs e)

byte[] bytes = File.ReadAllBytes("D:\toClient.xls");//toClient.xls 大小为20M
Response.BinaryWrite(bytes);



上面的程序如果所输出的文件特别大的话,有可能会直接报:System.OutOfMemoryException。正确的做法是把文件的字节流分段输出,其实asp.net有现成的方法Response.WriteFile(filePath)就是这么做的。

如下是正确的写法:
Response.ContentType = "application/octet-stream";
Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(downloadName, System.Text.Encoding.UTF8));
Response.Write www.hnnedu.com File("D:\toClient.xls");
Response.Flush();
Response.End();

当asp.net出现内存溢出时,一种简单的处理方法是马上回收应用程序池。但是这样并没有彻底解决问题。

创建Image类型时出现内存溢出(System.OutOfMemoryException)

错误代码: System.Drawing.Image myimg=System.Drawing.Image.FromFile(file.FullName);

当打开的文件不是图像文件时会引发的异常:

MSDN:如果文件没有有效的图像格式,或者如果 GDI+ 不支持文件的像素格式,则此方法将引发 OutOfMemoryException 异常。

这样的异常信息容易让人误解。本回答被提问者和网友采纳

以上是关于asp.net 读取mssql数据库,提示错误,求指教,附错误及后台代码的主要内容,如果未能解决你的问题,请参考以下文章

(ASP.NET 、 VS2008)JS(javascript) 判断 TextBox 是不是为空。求 JS 代码。

如何使用 ASP.NET 从 MSSQL 中获取 JQuery 自动完成小部件的数据

数据表未捕获类型错误:无法读取未定义的属性“添加”(asp.net / js)

请问各位大神:1.怎么实现将PDF显示在asp.net的网页之中,求详细操作与代码?

使用 MSSQL 和 MySQL 数据库作为实体框架 6 模型

asp.net本地读取服务器上文件