您的位置:首页 > 编程语言 > ASP

ASP.net编程中遇到的错误及解决方法

2010-02-05 15:55 281 查看
1,错误:做完了htm静态代码后,比如按钮,对按钮编写了事件之后并不执行,或者提示脚本错误:缺少对象或者

提示:把某个控件必须放入具有runnat=server的窗体内

例如:类型“Calendar”的控件“rili”必须放在具有 runat=server 的窗体标记内

解决方法:在静态代码处:body下面没有form改为: <form runat="server" method="post">

2,在DataGrid的HyperLinkColumn中,如何传入两个参数

用模板列,比如

<asp:TemplateColumn HeaderText="aa">

<ItemTemplate>

<a
href='aaa.aspx?id=<%#
container.dataitem("数据库中的字段名1")%>&id2=<%#
container.dataitem("数据库中的字段名2")%>'>这里写你要连接时看到的文字</a>

</ItemTemplate>

</asp:TemplateColumn>

注意:&id2前面不能有空格,否则取不出来id2值

同样:我们编写的table部分用超级链接传递参数,可以传递一个或多个:

例子如下:

传递两个参数:

cell.InnerHtml
= "<a href='modify-user-info.aspx?id1='" &
ds.Tables(0).Rows(i).Item("产品名称") & "'& id2='" &
ds.Tables(0).Rows(i).Item("单位名称") & "''>" &
ds.Tables(0).Rows(i).Item("产品名称") & "</a>"

使用时候:可以直接调用id1和id2的值

传递一个参数:

cell.InnerHtml = "<a href='modify-user-info.aspx?id=" & ds.Tables(0).Rows(i).Item("用户编号") & "'>删修</a>"

3,使用服务器端控件都要重新执行page_load事件

遇到问题:按钮来选择日历控件,每次都要把session值置空,他就是重新执行了page_load,所以要在page_load里面写上:

if postback=false then

第一次载入页面时候执行,而刷新页面时候不必再执行的代码

end if

4,错误原因:程序编写无误,但是每次并没有看到预想的结果

解决方法:有时候复制粘贴程序,程序开头的Handles部分会丢失,补上或者重新双击控件来自动生成程序体

5,错误现象:我编写的sell-in-index部分,每次单位变化了,相应的产品类别变化,但是并不知行selectedchange事件

解决方法:把companylist下拉列表框的属性autopostback置为true

否则不会对服务器端的处理进行响应

6,错误现象:不允许从数据类型 varchar 到数据类型 money 的隐性转换(表 'sckf.dbo.非工程非产品静态信息表',列 '合同额')。请使用 CONVERT 函数来运行此查询。

解决方法:把money类型的字段改为decimal类型的。money是八位的,decimal是九位的。

7,错误现象:System.InvalidCastException: 从类型“DBNull”到类型“String”的强制转换无效。

cell.InnerHtml = ds.Tables(0).Rows(i).Item("发消息人")

解决方法:tostring 之后用"="nothing否则不执行

If ds.Tables(0).Rows(i).Item("发消息人").ToString.Trim = Nothing Then

cell = New HtmlTableCell

row.Cells.Add(cell)

cell.Width = 60

cell.InnerHtml = " "

Else

cell = New HtmlTableCell

row.Cells.Add(cell)

cell.Width = 60

cell.InnerHtml = ds.Tables(0).Rows(i).Item("发消息人")

End If

8,错误现象:

已经在数据库中录入了时间:2006-6-9;但是感觉字段设置有问题,就设置为了Int,这时候发现原来录入的2006-6-9变成了四位数字3398

想起来了,奖金查询中,出现的时间"乱码",就应该是格式没有确定.

9,错误现象:sql server 在企业管理期中修改某条记录后,保存时候出现错误:

在流水模式下,事务无法启动

解决方法:拖动右边的滚动条向下,直到显示完所有的数据,再改就好用了

错误原因:出于对数据库的访问效率,只提取一部分内容,下面的提取工作进入了暂停,托动鼠标的滑块到最后,也就是把所有的数据读取完成。

网上发现:当你改完一个数据后用鼠标在别的单元格左键点击一下后再关闭数据表就不会报告“在流水模式下,事务无法启动”了.

如果你刚在一个单元格内改完数据,而光标还在刚刚改过的单元格内时关闭数据表就会出现“在流水模式下,事务无法启动”的问题

10,错误现象:由于sql server中录入的时间默认为日期+时间,但是显示出来的时间希望是日期格式的,处理方式如下:

convert(varchar(10),国外重点跟踪项目动态信息.录入时间,120) as 录入时间

11,错误现象: 必须进行收缩转换才能调用可访问重载“ListItemCollection.Add”。

For Each dr8 In ds8.Tables(0).Rows

jiafang.Items.Add(dr8("甲方单位名称"))

Next

ds8.Dispose()

改正如下:For Each dr8 In ds8.Tables(0).Rows

If dr8("甲方单位名称").ToString <> "" Then

jiafang.Items.Add(dr8("甲方单位名称"))

End If

Next

ds8.Dispose()

11,不能使用空白的对象或列名。如果必要,请使用一个空格

错误原因:表名和字段名之间的“点”忘了写上。

例如:产品出口动态信息表.是否完成

12,update 表名 set 表列='是' where '是' in (select distinct 列名 from 表名)

13,错误现象:第1行没有任何值

错误原因:查询出来放入到table2中的值和sql语句执行出来结果的记录数不相等.

在做审核时候常出现这个错误

14,错误现象: 超时时间已到。在从池中获取连接之前超时时间已过。

出现这种情况可能是因为所有池连接都已被使用并已达到最大池大小。

待定

2006-3-19: 最近两天进行测试,同时对代码进行了优化

最明显的特征:以前编写的程序都是直接实例化 dbcontroller

eg:dim obj as new dbcontroller

只要写一个sql语句就调用一次,而每次调用之后并没有关闭,多次定义而不关闭可能造成数据库连接池已经满

优化之后,这个错误不再出现,当然还有部分页面没有完全优化。

同时:dim reader as sqldatareader 的用法

一个过程只内只定义一个reader,每次执行完sql 语句之后就关闭。下次使用可以直接应用,而不用再定义

这两个方面如果做不好都是比较占用资源的。

15,测试问题:客户端测试不到具体错误原因,只能看到运行是错误,为了让所有人看到错误原因,要设定webconfig中的

<customErrors mode="Off"/>注意:这里的Off的第一个字母要大写

16,测试问题:今天测试了session过期时间长短,发现5分钟左右就没有信息了,无法保存值

上网找到了问题如下:

SessionState 的Timeout),其主要原因有三种。

一:有些杀病毒软件会去扫描您的Web.Config文件,那时Session肯定掉,这是微软的说法。

二:程序内部里有让Session掉失的代码,及服务器内存不足产生的。

三:程序有框架页面和跨域情况。

第一种解决办法是:使杀病毒软件屏蔽扫描Web.Config文件(程序运行时自己也不要去编辑它)

第二种是检查代码有无Session.Abandon()之类的。

第三种是在Window服务中将ASP.NET State Service 启动。

作为解决方法,我采用了第三种解决方案,发现连接时间确实长了一些,但是有待进一步测试。

17, 检测到 IIS 中的 ASP.NET 应用程序和服务已经锁定。

解决方法:

使用 Windows Server 2003 在 IIS 中取消 ASP.NET 应用程序的锁定

在已安装 IIS 的计算机上,从 Windows“管理工具”菜单打开 Internet 信息服务管理器。

打开本地计算机的节点,并在该节点下面打开“Web 服务扩展”节点。

在右窗格中,右击 ASP.NET 的项并选择“允许”。如果存在多个 ASP.NET 的项(对应不同的版本),请将它们都设置为“允许”。

18,错误现象:点击了一个动态纪录之后,其他的session还存在着,

解决方法:清除方法:在静态页面的page_load中把session.remove("prjname")掉就可以了

19,错误现象:无法写入输出文件“C:/Documents and Settings/Administrator/VSWebCache/DQ-VP9H192AK9QZ/cnpcweb/obj/Debug/cnpcweb.pdb”:

C:/Documents and Settings/Administrator/VSWebCache/DQ-VP9H192AK9QZ/cnpcweb/obj/Debug/cnpcweb.pdb: 存储空间不足,无法处理此命令。

解决方法:把.net关闭,然后重新启动

20,错误现象:无法写入输出文件,后面的错误为:拒绝访问,

  错误原因:最有可能的是两个人同时运行,容易出错

21,错误现象:操作必须使用一个可更新的查询

解决方法:在数据库所在的文件夹,属性,安全,iis来宾的权限设为可写入的。

22,错误:DropDownList 不能有多个项被选定

解决方法:在客户端,我定义了一个磨人的选择值,在服务器段,我又让DropDownList选中一个与客户端不同的默认值,这必然导致错误

23,所有的是否完成之类的下拉选出:是和否的控件,在修改的时候,仍然默认为否,而不是:是;

 这个错误涉及页面很多,所有的都要修改

 修改方法:把客户端涉及到的默认选择selected=true都去掉,如果想把哪个作为默认显示就把哪个写在上面

24,审核信息看不到的修改方法1:在客户端审核说明的第一节,

<ItemTemplate>

<asp:Label id="Label14" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "审核说明") %>'>

</asp:Label>

</ItemTemplate>

如果把这节的visible 设置为false那么看不到审核说明,所有去掉即可

25,审核通过:无论哪级进入,条件不用写上几级审核=‘否’

审核不通过:如果三级录入,三级审核;二级录入,二级审核:条件不用写上三级审核=‘否;二级审核='否'

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

26,国内客户关系修改时出现错误

错误原因:省份和城市下拉列表绑定有错误,分session("province")和provincelist中内容一致和不一致两种情况

并且一般不要用 ' Dim provincelist0_sql As String = "select distinct 省份名称 from 省市表" 'distinct 字段名

' obj.BindDrpDownList("省份名称", "省份名称", provincelist0_sql, provincelist0)

' provincelist0.SelectedItem.Selected = False

' provincelist0.Items.FindByText(Session("provincenew")).Selected = True这种形势

若在数据库中取出的内容带空格的话容易出错

27,更新两次之后,出现问题:产品名称下拉列表框中没有数据绑顶上,所以出现错误

31,关于验证的正则表达式

(2006-04-25 15:36:22) 顽石/xin

"^/d+$"  //非负整数(正整数 + 0)

"^[0-9]*[1-9][0-9]*$"  //正整数

"^((-/d+)|(0+))$"  //非正整数(负整数 + 0)

"^-[0-9]*[1-9][0-9]*$"  //负整数

"^-?/d+$"    //整数

"^/d+(/./d+)?$"  //非负浮点数(正浮点数 + 0)

"^(([0-9]+/.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*/.[0-9]+)|([0-9]*[1-9][0-9]*))$" //正浮点数

"^((-/d+(/./d+)?)|(0+(/.0+)?))$"  //非正浮点数(负浮点数 + 0)

"^(-(([0-9]+/.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*/.[0-9]+)|([0-9]*[1-9][0-9]*)))$"  //负浮点数

"^(-?/d+)(/./d+)?$"  //浮点数

"^[A-Za-z]+$"  //由26个英文字母组成的字符串

"^[A-Z]+$"  //由26个英文字母的大写组成的字符串

"^[a-z]+$"  //由26个英文字母的小写组成的字符串

"^[A-Za-z0-9]+$"  //由数字和26个英文字母组成的字符串

"^/w+$"  //由数字、26个英文字母或者下划线组成的字符串

"^[/w-]+(/.[/w-]+)*@[/w-]+(/.[/w-]+)+$"    /喌刂?

"^[a-zA-z]+://(/w+(-/w+)*)(/.(/w+(-/w+)*))*(/?/S*)?$"  //url

32,修改查询客户端录入时候,产品出口部分的调用脚本都好用,但是脚本调用之后不执行任何东西,也就是说:按钮按不动

后来发现按钮的属性中,type的值为button,而其他好用的都为submit修改之后就可以了。

32,如果普通的datagrid通过程序添加内容。如果取出点击行对应的某劣值

方法: dim sfz as string&nsp; = DataGrid2.Items(e.Item.ItemIndex).Cells(2).Text

这个意思:cell(2)的值为第三列。列从第0列开始

33,关于网页上的打印功能,放置一个按钮

打印出来的东西按钮要隐藏起来。

函数如下:Form1为要打印的表单名;display="none"为按钮不显示;print为按钮的名字

function pr()

{

Form1.Print.style.display ="none";

window.print();

Form1.Print.style.display ="block";

}

</script>

调用部分如下:

<INPUT style="WIDTH: 104px; HEIGHT: 26px" onclick="pr()" type="button" value="打印报名表" name="Print">

34,试图运行项目时出错,无法在web服务器上启动调试

处理过程:打开同一个机器上的其他项目都可以调试,排除了.net本身环境的问题

解决方法:看看配置信息,发现 <compilation defaultLanguage="vb" debug="true">被注释掉了

35,开发好的程序去安装到其他服务器上,结果htm文件可以看到,但是aspx文件载入时候总是出现运行是错误。

处理过程:把webconfig信息中的远程调试置为Off注意第一个字母是大写的

然后看到了具体的错误信息,原来是水晶报表那节错误

提示如下:

<compilation defaultLanguage="vb" debug="true"><assemblies>

<add assembly="CrystalDecisions.CrystalReports.Engine,
Version=9.1.5000.0, Culture=neutral,
PublicKeyToken=692fbea5521e1304"/>

<add assembly="CrystalDecisions.ReportSource, Version=9.1.5000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>

<add assembly="CrystalDecisions.Shared, Version=9.1.5000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>

<add assembly="CrystalDecisions.Web, Version=9.1.5000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>

</assemblies></compilation>

因为服务器上只是安装了.net系统必备,而没有水晶报表的文件。所以出现了错误,可以把这节中涉及水晶报表的信息给注释掉就可以发布好
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: