ASP.NET 错误记录

ASP.NET错误记录
最终编辑  Really·Jen

以下是我在以往的ASP.NET网站建设中总结的一些错误记录,以后可能用不上了,发出来希望能解决网友们的些许问题。

1.密码最短长度为7,其中必须包含以下非字母数字字符:
注册时发生
解决方案:
1>. 7位密码中输入“~!@#$%^&*()_+”其中之一。
2>. 修改J:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG->machine.config文件中的
<membership>
<providers>
   <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="LocalSqlServer" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true" applicationName="/" requiresUniqueEmail="false" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="7" minRequiredNonalphanumericCharacters="1" passwordAttemptWindow="10" passwordStrengthRegularExpression=""/>
</providers>
</membership>
为:minRequiredPasswordLength="5" minRequiredNonalphanumericCharacters="0"
3>. 若只针对某一站点,则把<membership>节点中的代码插入web.config中的<system.web>节点即可。

2. 验证发生前无法调用 Page.IsValid。应在 CausesValidation=True 且已启动回发的控件的事件处理程序中查询它,或在调用 Page.Validate 后查询。
加载页面时发生
解决方案:若页面中使用了验证控件,则与验证控件无关的控件”Causes Validation”属性需要设置为”False”.

3.运算符“==”与操作数类型“Int32”和“Object”不兼容
加载页面时发生
解决方案:具体原因不知,只是这样做后就没这个问题了
重新配置数据源或重新编辑整个页面(重启系统后),并分阶段进行编译而非一次性编译.

4. DELETE 语句与 REFERENCE 约束"FK_VoteItem_VoteTitle1"冲突。该冲突发生于数据库"FullVote",表"dbo.VoteItem", column 'TitleID'。
语句已终止。

单击GridView1控件中的Delete时发生
解决方案:在建立数据表关系时要设置”INSERT和UPDATE规范”,”删除规则”设置为”层叠”或”设置空”(最好为”层叠”,不会像”设置空”那样占用表空间).

INSERT 和 UPDATE 规范类别 
展开此项可显示关系的“删除规则”和“更新规则”的信息。
删除规则 
指定当用户尝试删除某一行而该行包含外键关系涉及的数据时将发生的情况。 
No Action   An error message tells the user that the deletion is not allowed and the DELETE is rolled back.
Cascade   Deletes all rows containing data involved in the foreign key relationship.
Set Null   Sets the value to null if all foreign key columns for the table can accept null values.仅适用于 SQL Server 2005。
设置默认值   如果表的所有外键列均已定义默认值,则将值设置成为该列定义的默认值。仅适用于 SQL Server 2005。
更新规则 
指定当用户尝试更新某一行而该行包含外键关系涉及的数据时将发生的情况。 
No Action   An error message tells the user that the deletion is not allowed and the DELETE is rolled back.
Cascade   Deletes all rows containing data involved in the foreign key relationship.
Set Null   Sets the value to null if all foreign key columns for the table can accept null values.仅适用于 SQL Server 2005。
设置默认值   如果表的所有外键列均已定义默认值,则将值设置成为该列定义的默认值。仅适用于 SQL Server 2005。

5.未将对象引用设置到对象的实例。
单击重定向按钮时发生
解决方案: 把Response.Redirect("~/ViewVote.aspx")改为 Response.Redirect("~/ViewVote.aspx?titleid=" + DropDownList1.SelectedValue.ToString())后即解决.[当前页面中有DropDownList1控件]

6.运算符“==”与操作数类型“Int32?”和“Object”不兼容
加载页面时发生
解决方案:其他问题解决后即不再有此问题

7.单击按钮不能发生任何事件
解决方案:双击按钮后的事件名与按钮属性中的Click事件名不一致,应改为一致.

8. 无法创建关系“FK_Student_ExamGroup”。 
ALTER TABLE 语句与 FOREIGN KEY 约束"FK_Student_ExamGroup"冲突。该冲突发生于数据库"GPMS",表"dbo.ExamGroup", column 'ExamGroupID'。
创建外键关系时发生(在一个表中更换了字段)
解决方案:在给两个表创建关系时,若一个表中新添了字段或更换了字段,而这个表中已有数据存在,则会发生此问题.此时需要给另一个表也加入相应数据或者把已有数据删除.

9. SQL2000附加数据库时提示"错误602;未能在sysindexes中找到数据库ID7中对象ID1的索引ID1对应的行
假如是采用sqlServer2005的话你用Sql2000附加Sql2005的数据库就会出现这种错误(解决方法:改用SqlServer2005附加一下,假如还想用Sql2000格式那就用导出sql语句等方式进行转换) 
转csdnsql专家邹建的解决办法

直接restore或附加应该是不行的,用脚本 导数据肯定没有问题。


2005转到2000的步骤
1>.生成for2000版本的数据库脚本
2005的mangerstudio
--打开"对象资源治理器"(没有的话按F8),连接到你的实例
--右键要转到2000的库
--任务
--生成脚本
--在"脚本向导"的"选择数据库"中,确定选择的是要转到2000的库
--勾选"为所选数据库中的所有对象编写脚本"
--在接下来的"选择脚本选项"中,找到"为服务器版本编写脚本"项,选择"SQLServer2000"
--其他选项根据需要设置
--最后把脚本保存到一个.sql脚本文件

2>.在2000中创建目标数据库
在查询分析器(或2005的mangerstudio在打开脚本文件),连接到SQLServer2000,执行上面生成的脚本.以创建一个新的数据库

3>.将数据从2005导到2000
2005的mangerstudio
--打开"对象资源治理器"(没有的话按F8),连接到你的实例
--右键要转到2000的库
--任务
--导出数据
--在"SQLServer导入和导出向导"的"选择数据源"步骤中,确定选择的是要导出的数据库
--在"选择目标"步骤中,连接到2000,并选择步骤2新建的库
--在"选择源表和源视图"中,选择所有的表
--最后完成

10.用户 'NT AUTHORITY\NETWORK SERVICE' 登录失败
IIS均按要求进行了配置,但确无法在localhost中浏览(相应的数据库没有设置用户名和密码)
解决方案:
在Windows XP当中,ASP.NET的运行帐号是ASPNET,而在Windows server 2003当中,运行帐号则改为了Network Service,直接把这个用户加到sql server的登陆帐号里面就好了,这样很多例子就不用去改连接字符串了!
第一步:把'NT AUTHORITY\NETWORK SERVICE' 添加到Administrator组中
我的电脑-->右键-->管理-->本地用户和组选择“组”-->
双击Administrators-->单击“添加”-->单击“高级”-->
单击“立即查找”-->
在下面的列表中选择Network Service用户-->两次单击“确定”-->加入。 
第二步 在企业管理器中加入NetWord Service用户
打开Sql Server企业管理器-->
选择数据库实例-->
打开“安全性”节点-->选择“登录”-->
在右边的列表中单击右键-->选择“新建登录”-->
在“常规”选项卡中单击“名称”旁边的按钮“...”-->
选择“Administrators”组-->单击下面的“成员”按钮-->
选择“Network Service”-->单击“添加”按钮-->
单击“确定”,返回“新建登录”对话框-->
保证身份验证类型为“windows验证”和“允许访问”-->
双击该用户 在服务器角色 中 勾选 sysadmin
单击“确定”-->
关闭“企业管理器” 
第三步重新运行asp.net程序,数据库连接字符串选择windows验证即可。

11. 在应用程序级别之外使用注册为 allowDefinition='MachineToApplication' 的节是错误的。如果在 IIS 中没有将虚拟目录配置为应用程序,则可能导致此错误。
原因:Machine.config里的allowDefinition="MachineToApplication"。

解决1:把allowDefinition设为:Everywhere。考虑到最好不要改动Machine.config文件,否则可能会引起其他错误。

解决2:<authentication mode="***"> 是应用级别的,不能在子目录级别的web.config内
设置,只能在根目录级别的web.config内。所以,应删除子目录中的<authentication>节。

12. 在启用了 Delete、Insert 或 Update 操作时,LinqDataSource“LinqDataSource1”不支持 Select 属性。
默认情况下,LinqDataSource 控件从数据对象中检索所有属性的值。如果您要使用可用属性的子集,可使用 Select 属性来指定要返回的属性。Select 操作应用于 Where、Order By 和 Group By 操作之后。因此,如果在 Select 子句中创建一个别名,则该别名不能用于其他子句。 
可以指定是否通过使用 EnableDelete、EnableInsert 和 EnableUpdate 属性来启用数据修改。用于从 LinqDataSource 控件修改数据的用户界面通常利用数据绑定控件(如 DetailsView 控件)来提供。除了将 EnableDelete、EnableInsert 或 EnableUpdate 设置为 true,还需要满足以下条件来启用自动数据修改: 
不能为 Select 属性赋值。 
不能为 GroupBy 属性赋值。 
分配给 ContextTypeName 属性的类必须派生自 DataContext。 
分配给 TableName 属性的属性必须派生自 Table<(Of <(TEntity>)>)。 
您可以使用两种方法来限制数据绑定控件中显示的属性。可以将 Select 属性设置为属性子集,也可以通过添加 DataControlField 控件为数据绑定控件定义字段。但是,如果设置 Select 属性,则表示无法启用自动更新、插入和删除操作。如果要在使用可用属性子集时启用自动数据修改,请勿设置 Select 属性。相反,请检索数据对象中的所有属性并通过使用数据绑定控件来管理要显示的属性。当使用 DetailsView 控件或 GridView 控件时,还必须将 AutoGenerateRows 或 AutoGenerateColumns 属性设置为 false。这样会阻止数据绑定控件自动包含用于编辑和删除数据的按钮。任何未显示在数据绑定控件中的值都将存储在视图状态中。当执行数据更新时,它们会按原样传递到数据源。 
如果在运行时必须计算供排序、筛选或分组的值,则可以将参数添加到 WhereParameters、GroupByParameters、OrderGroupsByParameters 或 OrderByParameters 集合。 
如果要指定如何处理空字符串值或要提供默认值,则可以将参数添加到 InsertParameters、UpdateParameters、DeleteParameters 或 SelectParameters 集合。 
如果要在执行数据操作之前对值进行检查或修改,则可以处理 Deleting、Inserting、Selecting 或 Updating 事件。还可以处理这些事件,以便取消数据操作或检查在基于用户输入来设置数据类中的属性时发生的验证错误。 
若要在完成数据操作之后对值进行检查,则请处理 Deleted、Inserted、Selected 或 Updated 事件。 
通过为 Selecting 事件创建事件处理程序,可以使用 LinqDataSource 控件从存储过程检索数据。在事件处理程序中,调用数据上下文类中表示存储过程的方法,并将结果设置为 LinqDataSourceSelectEventArgs 对象的 Result 属性。如果要对数据启用自动更新、插入和删除操作,从该方法返回的类型必须与 TableName 属性中指定的类型相匹配。有关创建数据上下文方法的更多信息,请参见如何:创建映射到存储过程和函数的 DataContext 方法(O/R 设计器)。

13. 找不到与 ViewState 中存储的原始值中的给定键相匹配的行。请确保“keys”字典包含与上一个 Select 操作返回的行对应的唯一键值。

ListView更新数据时出错
解决方案:在ListView控件中添加属性:DataKeyNames=”主键列名(一个或多个)”.
网上查到:
使用ASPxGridView控件时,点Edit编辑一行,出来Update和cancel,编辑完数据后点击Update,出错:在正在编辑的那行下方会出来一汗背景淡红色字体是红色的字“不支持所指定的方法”,英文是Specified method is not supported.
解决办法是用数据源控件加载数据,指定ASPxGridView控件的DataSourceID等于该数据源控件的ID,并指定一个KeyFieldName。我是看了官方的DEMO才知道这样做的,我原来是用我们项目自己的数据访问层提供的接口加载数据在.ASPX.CS文件中绑定给它的,这样做不无更新数据的原因我解释为:ASPxGridView控件本身只做显示数据的作用,但网页加载完毕后就不存在数据源,因此不法Update数据,需要用数据源控件保存数据以便更新,并且更新数据是让数据源控件去做的。这样解释不合理之处还望赐教。
数据源控件有很多,我这里用的是ObjectDataSource,因为我们项目本身已经有数据访问层存在了,不需要用其他的数据源控件访问数据库。在这个WEB项目下新建一个文件夹App_Code,在App_Code下 新建个类abc,定义命名空间为DEMO,using数据访问层的命名空间,添加一个方法LoadData,返回DataTable类型的值,方法参数随 意,在这个方法中加载数据返回;再添加一个方法UpdateData,参数至少1个以上,就是需要传给存储过程的一些ID列和要修改的值(这些参数都要在ObjectDataSource的UpdateParameters属性中添加,它们的名字与这些参数名相同,同时它们还要在ASPxGridView控件的Columns中存在,如果是不想显示的列可以设置Visible="False"),那么对于我们肯定是要修改一些值的要不然就不用Update了,无需返回值,方法中调用数据访问层的方法修改数据。
然后设置ObjectDataSource控件的TypeName="DEMO.abc",SelectMethod="LoadData",UpdateMethod="UpdateData",同时还要添加SelectParameters的参数名和值,参数名要跟LoadData函数中的参数名相同,值有各种选择,可以是控件的属性,也可以是Session变量,根据需要设定,如下图。好了,这回没有红色的字出来了,而且数据修改成功。

14.ListView数据更新没有成功
上述问题解决后数据更新依然没有成功
解决方案:
问题出在我修改了<EditItemTemplate>标签中的内容,没有注意到<EditItemTemplate>与<ItemTemplate>的不同.      <%# %>中一个为Eval(),一个为Bind().
需要修改的数据设置为Bind,不需要修改的数据依然是Eval.
参考MSDN:数据绑定表达式语法
所有数据绑定表达式都必须包含在 <%# 和 %> 字符之间。
ASP.NET 支持分层数据绑定模型,该模型创建服务器控件属性和数据源之间的绑定。几乎任何服务器控件属性都可以绑定到任何公共字段或属性,这些公共字段或属性位于包含页或服务器控件的直接命名容器上。
数据绑定表达式使用 Eval 和 Bind 方法将数据绑定到控件,并将更改提交回数据库。Eval 方法是静态(只读)方法,该方法采用数据字段的值作为参数并将其作为字符串返回。Bind 方法支持读/写功能,可以检索数据绑定控件的值并将任何更改提交回数据库。
可以使用 XPath 和 XPathSelect 方法以及 XPathBinder 类从 XmlDataSource 控件绑定到 XML 数据。有关更多信息,请参见 XmlDataSource Web 服务器控件。

15.IE中更新数据后再点击导航栏时还是原来数据(数据库中已更新)
解决方案:
不从缓冲中读取数据的做法(引用别人的)
不从缓存里读取数据,同样在JSP里也能实现,请看下面:
方法一:
1>,使用java提供的方法,在jsp或者servlet中都可以
<%
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires",0);
%>
2>,使用HTML标记,如下面:
<HEAD>
<METAHTTP-EQUIV="Pragma"CONTENT="no-cache">
<METAHTTP-EQUIV="Cache-Control"CONTENT="no-cache">
<METAHTTP-EQUIV="Expires"CONTENT="0">
</HEAD>
附加说明:
HTTP头信息“Expires”和“Cache-Control”为应用程序服务器提供了一个控制浏览器和代理服务器上缓存的机制。HTTP头信 息Expires告诉代理服务器它的缓存页面何时将过期。HTTP1.1规范中新定义的头信息Cache-Control可以通知浏览器不缓存任何页面。 当点击后退按钮时,浏览器重新访问服务器已获取页面。如下是使用Cache-Control的基本方法:
  1) no-cache:强制缓存从服务器上获取新的页面
  2) no-store: 在任何环境下缓存不保存任何页面
  HTTP1.0规范中的Pragma:no-cache等同于HTTP1.1规范中的Cache-Control:no-cache,同样可以包含在头信息中。 
  通过使用HTTP头信息的cache控制,第二个示例应用logoutSampleJSP2解决了logoutSampleJSP1的问题。 logoutSampleJSP2与logoutSampleJSP1不同表现在如下代码段中,这一代码段加入进所有受保护的页面中:
//...
response.setHeader("Cache-Control","no-cache"); //Forces caches to obtain a new copy of the page from the origin server
response.setHeader("Cache-Control","no-store"); //Directs caches not to store the page under any circumstance
response.setDateHeader("Expires", 0); //Causes the proxy cache to see the page as "stale"
response.setHeader("Pragma","no-cache"); //HTTP 1.0 backward compatibility
String userName = (String) session.getAttribute("User");
if (null == userName) {
 request.setAttribute("Error", "Session has ended. Please login.");
 RequestDispatcher rd = request.getRequestDispatcher("login.jsp");
 rd.forward(request, response);
}
//...
方法二:
     在IE中也可通过设置实现:把/工具/INTERNET选项/常规/设置/的检察所存页面的较新版本,设为每次访问该页时都检查.

16.ASP.NET控件textbox的样式overflow:visible在IE6和IE7不兼容
现在,最令网页设计者头痛的问题就是网页在各个浏览器中的兼容性。而兼容性差最长见的,也是最令人恐惧的便是“页面布局混乱”。常常一个页面在 IE6下显示的非常完美,而到了IE7(或者FireFox)中,则惨的“不堪入目”。到底是什么让这些页面那么的“水土不服”呢?
其实,这些都是IE6酿下的恶果,IE6对web标准的支持过于不足,甚至理解的有偏差,才导致了这些页面的“脆弱”。而IE7则修正了很多的那种 “IE6对css解释和渲染”的bug。这种bug有很多。今天,这里只讲其中一个,但是确是最重要的一个,很多的“十分”混乱的页面都是它造成的。可以 不客气地说,它简直就像“页面布局混乱黑帮”的幕后黑手,是引起页面布局混乱的祸首之一,而且是最大的一个。 它就是潜伏在网页背后的“‘overflow:visible’IE6渲染bug”。
原因——IE6对“overflow:visible”的误解
Visible: "This value indicates that content is not clipped, i.e.,it may be rendered outside the block box(注:后面这句可能是后续版本补充上来的)".
注意,w3c只是说,超出容器的内部不会被剪切。但是它并没有说,超出来的内容可以“撑开”容器。所以下面这个例子中IE7的解释和渲染是正确的,而 IE6则是错误的(因为它错误的认为,只有让容器内的内容“撑开”容器,才能让容器内的内容在超出时不被剪切),IE7和FireFox是一样的。
解决方法
大家知道IE有两种渲染模式:Quirks Mode和Strict Mode。Quirks Mode基本上是非标准的,包括盒模型在内,它的渲染方式与W3C的标准有些出入。而Strick Mode基本上是标准的(反正都不是绝对标准也不是绝对不标准……)。IE6及以前版本会根据写在XHTML文档第一行(也只能是第一行)的 DocType声明来选择渲染模式。如果发现了一个它能识别的DocType,比如XHTML Transitional或者XHTML Strict等等,它就使用Strict Mode来渲染。其他所有情况下都使用Quirks Mode。
有些开发者为了显式地声明他们的XHTML文档是一个XML,会在文档的第一行(问题就在这里,它也必须在第一行)加上XML的序言(prolog)。比如:
<?xml version="1.0" encoding="gb2312"?>
虽然初衷是为了让文档更“标准”,但由于IE不认这行字,结果还是按Quirks Mode来渲染。
IE7 解决这个问题,它会跳过prolog来看检查DocType。所以可能会出现IE6及以下版本用Quirks Mode渲染而IE7 用Strict Mode渲染的情况。
现在让IE7渲染textbox的模式是Quirks Mode,这样textbox的overflow:visible属性就可以像IE6效果一样了,所以只要把XHTML文档第一行的DocType声明删除就可以了。
这样问题就解决了。。。
注意:虽然在IE7和IE6中显示一样的,但是在FF中还是不一样,所以这种方法只能解决IE7中的问题,FF中的是无能为力的。

另法:TextBoxID.Attributes.Add("style", "overflow:visible");


我在GPMS中的解决方案: 
把XHTML文档第一行的DocType声明删除
html,body{ height:100%; }
<asp:TextBox ID="TextBox1" runat="server" TextMode="MultiLine" CssClass="TextBox"/>
.TextBox{ overflow:visible; width:100%; min-height:500px !important; background-color:#FFEFD5; padding:20px; padding-right:0 !important;_padding-right:20px; border:0 ; margin:0; }

17.w3c标准自适应高度height100%不起作用的问题
在以前的网页中,table用height:100%是可以整屏的,但在网页头部增加:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">
后就和没有用height:100%一样了,后来发现要给html,body都增加height:100%的属性,这是高度自适应问题的关键所在。
------------------------------------------------ html,body{       margin:0px;       height:100%; } ------------------------------------------------       一个对象高度是否可以使用百分比显示,取决于对象的父级对象,Table在body之中,因此它的父级是body,而浏览器默认状态下,是没 有给body一个高度属性的,因此当我们直接设置#left为height:100%;时,不会产生任何效果,而当我们给body设置了100%之后,它 的子级对象Table的height:100%;便发生作用了,这便是浏览器解析规则引发的高度自适应问题。而代码中除了给body应用之外,还给 HTML对象也应用相同的样式设计,这样做的好处是使IE与firefox浏览器都能够实现高度自适应。另外,Firefox中的HTML标签不是 100%高度,因此给两个标签都定义为height:100%;以保证两个浏览器下均能够正常显示。

18.使listview中选择某一数据时只显示该数据的过程中出错:若在第一页则正确显示,若在第一页以后则不能正确显示(显示内容为与第一页对应位置的数据)
解决方案:
ListView1_SelectedIndexChanging事件中先绑定空数据
BindNull();
再绑定选择数据
BindSelected(NewsID);

19. FreeTextBox文本倥件输入汉字的时候可以自动换行,但输入数字和英文就不能换行
没有解决,不过官方原版英文的肯定输入英文能自动换行

20. 如何让数据自动换行?CSS帮你解决问题 [绝!!!]

在表格的 style 属性哪里 加上 
   "word-break:break-all;word-wrap:break-word" 
这样就可以保持页面不变...就算是多长的一串文字也没有问题了...
(解决了我的一个难题:TextBox中输入的内容若没用回车来换行时若在高度可自适应的TEXTBOX中显示出来则不会自动换行) (但在FireFox中不能完美解释) [其他的不能自动换行的问题也可用此方法解决?]

21.FireFox中点击按钮后页面自动加长
解决方案:去除页面主要部分的<div>中属性”Height:100%”.

22.序列不包含任何元素 
在数据表中查询某字段的值等于某个参数值,而这个字段却还未赋值时发生.
解决方案:先判断指定的字段是否包含传递的参数再判断是否为空
var stuidInclude = from o in db.Result
                                   select o.StuID;
                if (stuidInclude.Contains(StuID))
                {
                    var Term = from p in db.Result where p.StuID == StuID && p.TermID == TermID select p;
                    if (Term.Count() > 0)
                        return Term.First().TermResult;
                    else
                        return null;
                }
                else
                    return null;
也可直接判断是否为空(不用管字段是否赋值)[此方法较好]
var Term = from p in db.Result where p.StuID == StuID && p.TermID == TermID select p;
                    if (Term.Count() > 0)
                        return Term.First().TermResult;
                    else
                        return null;
23.索引超出范围。必须为非负值并小于集合大小。
参数名: Index 
行 85:                 TeaID[i] = ListView1.DataKeys[i].Value.ToString();

在用ListView1_ItemDataBound(object sender, ListViewItemEventArgs e)循环获取主键时发生
解决方案:用ListView1_DataBound(object sender, EventArgs e)事件代替.

24.不能添加其键已在使用中的实体。 
不能添加其键已在使用中的实体 (a主表,b外键表)?
解决方法:
A.给外键ID赋值,注意:不能a.id=11,再b.aId=a.Id,而是:int i=11,a.Id=i,b.aId=i;
B主表自动增长列
修改a.Id时:
就先找到就先找到新a.id的对象etnewa,再把b的对应etnewa.b.Add(etb),再update(etnewa)

文章出处:http://www.diybl.com/course/4_webprogram/asp.net/asp_netshl/2008821/136763.html

25.ListView中控件失效
在浏览器中浏览时,ListView中分页控件和其他链接均失效
出现该问题的原因:在此页中使用了验证控件,而只对部分控件使用了CausesValidation="True"; 但在listview中却没有CausesValidation属性,因此导致控件失效.

26. 从客户端(...)中检测到有潜在危险的 Request.Form 值。

说明: 请求验证过程检测到有潜在危险的客户端输入值,对请求的处理已经中止。该值可能指示危及应用程序安全的尝试,如跨站点的脚本攻击。通过在 Page 指令或 配置节中设置 validateRequest=false 可以禁用请求验证。但是,在这种情况下,强烈建议应用程序显式检查所有输入。
解决方法:
在页首<%@ Page Language="C#" … %>中加入validateRequest=false即可.


27. 将截断字符据。\r\n语句已终止。
原因:超了数据库字段长度所致
解决:调整数据库字段长度

28. 此数据库没有有效所有者,因此无法安装数据库关系图支持对象。若要继续,请首先使用“数据库属性”对话框的“文件”页或ALTER AUTHORIZATION语句将数据库所有者设置为有效登录名,然后再添加数据库关系图支持对象。
原因一:从SQL SERVER 2000中备份的数据库还原到SQL SERVER 2005上,打算新建一个数据库关系图,可是在Microsoft SQL Server Management Studio中一点数据库关系图的文件夹,就出现一个“此数据库没有有效所有者,因此无法安装数据库关系图支持对象。若要继续,请首先试用”数据库属性”对话框的”文件”页或ALTER AUTHORIZATION语句将数据库所有者设置为有效登录名,然后再添加数据库关系图支持对象”的提示按照他说的指定所有者,可惜还是不对,查了一下,应该执行如下语句:
USE [master]
GO
EXEC dbo.sp_dbcmptlevel @dbname=N’数据库名’, @new_cmptlevel=90
GO
因为2000备份的数据库还原到2005以后,兼容级别是80,更新成90就OK了
原因二:
        当把从其它机器备份出来的数据库,还原到自己的机器上后,在SSMS中点击这个数据库的数据库关系图时,出现了以下提示:
此数据库没有有效所有者,因此无法安装数据库关系图支持对象。若要继续,请首先使用“数据库属性”对话框的“文件”页或ALTER AUTHORIZATION语句将数据库所有者设置为有效登录名,然后再添加数据库关系图支持对象。
数据库中确定是有数据库关系图的。提示给出了两种方法,第一种试了几次都不好用,第二种方法倒是一次成功,具体在SSMS中运行以下命令:
ALTER AUTHORIZATION ON database::mydbname TO sa
把mydbname修改为实际的数据库名称,就可以把所有者设置为sa了。

29.update语句的语法错误
Update语句跟踪检查了一遍又一遍,也没有发现有什么异常。更奇怪的是把那个更新语句拿到Access中去直接运行,一点错误没有
解决方案:
把字段名用“[]”,括起来.

posted on 2011-05-20 15:27  Jack.leung 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/jack-liang/archive/2011/05/20/2052040.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值