.NET常见错误解决方法


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

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

异常详细信息: System.Web.HttpRequestValidationException: 从客户端(ftbContent="<P><A href="http://l...")中检测到有潜在危险的 Request.Form 值

以上为系统报错信息。原因是,在 ASP.NET 1.1 中,@Page 指令上的 ValidateRequest 属性被打开后,将检查以确定用户没有在查询字符串、Cookie 或表单域中发送有潜在危险性的 HTML 标记。如果检测到这种情况,将引发异常并中止该请求。该属性默认情况下是打开的;您无需进行任何操作就可以得到保护。如果您想允许 HTML 标记通过,必须主动禁用该属性。

解决办法:

方法一、修改.aspx文件

在.aspx文件中加入validateRequest="false",形如:

<%@ Page validateRequest="false" language="c#" Codebehind="WriteNews.aspx.cs" AutoEventWireup="false" Inherits="News.WriteNews" %>

方法二、配置web.config文件
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
   
  <system.web>

    <!--  WriteNews.aspx使用内容编辑框时必须添加该语句,否则无法 Request值
    -->
 <pages validateRequest="false"/>

   </system.web>
</configuration>

推荐使用方法一。

2.未将对象引用设置到对象的实例。
1.ViewState 对象为null。
2.DateSet 空。
3.sql语句或Datebase的原因导致DataReader空。
4.声明字符串变量时未赋空值就应用变量。
5.未用new初始化对象。
6.Session对象为空。
7.对控件赋文本值时,值不存在
8.使用Request.QueryString()时,所获取的对象不存在,或在值为空时未赋初始值
9.使用FindControl时,控件不存在却没有做预处理

 一般在C#中造成“未将对象引用设置到对象的实例”错误都是控件名称与codebehind里面的没有对应,对于初学编程的人,而在编码中重复定义也会造成这种问题的产生。

3. net2.0的写访问权限
当前标识(NT AUTHORITY\NETWORK SERVICE)没有对“C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files”的写访问权限。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Web.HttpException: 当前标识(NT AUTHORITY\NETWORK SERVICE)没有对“C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files”的写访问权限。

源错误:

执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。

I.   堆栈跟踪:

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis -i -enable

II.   找到权限选项卡,把ASPNET的权限加上


posted @ 2006-12-01 16:50  '.Elvis.'  阅读(414)  评论(0编辑  收藏  举报