• 全部
  • .NET Framework
  • ASP
  • Web Services
  • .NET互联网桌面应用
  • VB
  • 图表区
  • 分析与设计
  • 组件/控件开发
  • AppLauncher
  • 问答

一百分求XML问题 望高手笑纳

myding008 2004-10-26 06:56:27

我用程序生成一个XML文件,可是只要在TEXTBOX输入如:<br><p><img>之类的标记,一点确定按钮就出错。错误信息如下:

“/Asp.Net10”应用程序中的服务器错误。
--------------------------------------------------------------------------------

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

异常详细信息: System.Web.HttpRequestValidationException: 从客户端(Message="...AAAAAAAA <BR>")中检测到有潜在危险的 Request.Form 值。

源错误:

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

堆栈跟踪:


[HttpRequestValidationException (0x80004005): 从客户端(Message="...AAAAAAAA
<BR>")中检测到有潜在危险的 Request.Form 值。]
System.Web.HttpRequest.ValidateString(String s, String valueName, String collectionName) +230
System.Web.HttpRequest.ValidateNameValueCollection(NameValueCollection nvc, String collectionName) +99
System.Web.HttpRequest.get_Form() +121
System.Web.UI.Page.GetCollectionBasedOnMethod() +70
System.Web.UI.Page.DeterminePostBackMode() +47
System.Web.UI.Page.ProcessRequestMain() +2106
System.Web.UI.Page.ProcessRequest() +218
System.Web.UI.Page.ProcessRequest(HttpContext context) +18
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication+IExecutionStep.Execute() +179
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +87




--------------------------------------------------------------------------------
版本信息: Microsoft .NET Framework 版本:1.1.4322.573; ASP.NET 版本:1.1.4322.573

这是我的CS文件:

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Xml;
namespace Asp.Net10
{
/// <summary>
/// WebForm1 的摘要说明。
/// </summary>
public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.TextBox Title;
protected System.Web.UI.WebControls.TextBox Message;
protected System.Web.UI.WebControls.Button OKbut;

private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
}

#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.OKbut.Click += new System.EventHandler(this.OKbut_Click);
this.Load += new System.EventHandler(this.Page_Load);

}
#endregion

private void OKbut_Click(object sender, System.EventArgs e)
{
string Titlestr,Messagestr,xmlname,filetype;
Titlestr=Title.Text;
Messagestr=Message.Text;
xmlname=DateTime.Now.ToString("yyyyMMddHHmmss");
filetype=".xml";
xmlname+=filetype;

//****************************************************************************
XmlDocument doc=new XmlDocument();
string sXml="<Topic>" +
"<Issue>" +
"<PostUserNickName></PostUserNickName>"+
"<Content></Content>"+
"</Issue>" +
"</Topic>";

doc.LoadXml(sXml);

XmlDeclaration dec=doc.CreateXmlDeclaration("1.0","GB2312",null);
string PItext = "type='text/xsl' href='2.xsl'";
XmlProcessingInstruction pi=doc.CreateProcessingInstruction("xml-stylesheet",PItext);

doc.InsertBefore(dec,doc.DocumentElement);
doc.InsertBefore(pi,doc.DocumentElement);

doc.DocumentElement.ChildNodes[0].ChildNodes[0].InnerText=Titlestr.ToString();

XmlCDataSection CDs=doc.CreateCDataSection(Messagestr.ToString());
doc.DocumentElement.ChildNodes[0].ChildNodes[1].AppendChild(CDs);

doc.Save(Server.MapPath(xmlname));




}
}
}
...全文
103 点赞 收藏 21
写回复
21 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
skyover 2004-10-26
只能TT了
回复
myding008 2004-10-26
谢谢
回复
BearRui 2004-10-26
哈哈,楼主讲笑了,我除了喜欢研究CS(是游戏CS,不是什么服务,客户)之外什么都没研究过。
----------------------------------------------------------
如果打算学XSL的话还是先学好XML比较好点。

介绍一个学XML和XSL的好地方给你:

http://www.w3schools.com/
回复
myding008 2004-10-26
孤熊 | 爱情!它把我给忘了!

感觉你对XML很有研究。我刚接触,觉得XML挺难的。也买了2本XML的书。看了一下也不是特别难理解,但就是做不出来东西,是不是我应该好好的学一下XSL呀,还有XSL与XSLT有何区别
回复
myding008 2004-10-26
明白啦
回复
BearRui 2004-10-26
就算你保存到数据库或文件,也会出错的,这不是你保存文件的错误。

就是你的按钮下面没有任何代码,只要你的按钮是postback了,就会抱错的。

你可以试一下,把你按钮下的代码全删了,然后试试!!!
回复
myding008 2004-10-26

我这个是在保存XML时发生的错误呀
回复
BearRui 2004-10-26
validateRequest:

指示 ASP.NET 在从浏览器输入的所有内容中检查是否存在潜在的危险数据。如果是 true,则将所有输入数据与一个潜在危险值列表进行比较,从而执行请求验证。如果发生匹配,ASP.NET 将引发 HttpRequestValidationException 异常。
回复
myding008 2004-10-26
那位兄弟能不能在解释一下validateRequest="false"这句话有什么意义就好了
回复
myding008 2004-10-26
谢谢各位。我先回去试
回复
myding008 2004-10-26
myding008@163.com
回复
xidu007 2004-10-26
我一会给你发源码留下你的邮箱
回复
BearRui 2004-10-26
你试一下就知道是不是了!!!
回复
myding008 2004-10-26
谢谢!!!
回复
myding008 2004-10-26

是这样的吗?这个应该是在写入XML时的错误呀
回复
BearRui 2004-10-26
跟这个贴一样的问题:
http://community.csdn.net/Expert/topic/3489/3489840.xml?temp=3.451174E-02

-------------------------------------
打开你aspx:找到下面这行:

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

改为:

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

一般这一行就是第一行!!!
回复
luluso 2004-10-26
在web.config文件里加:
在system.web节加入:
<pages validateRequest="false"/>
回复
luluso 2004-10-26
楼上正解。确实是这样.
在web.config那里加也行.
回复
cuike519 2004-10-26
在你的@Page后面添加validateRequest=false
回复
minghui000 2004-10-26
up + 接分 + 学习



///////////////////////////////////////////

/` `.__
\_ _., `'-._ _.--.
_`_ ) | '/ _ \
/ `/ /'---./ / \ \--.___
\__./ /--.. /``-\ '-.___`\
'-' `--`
回复
发帖
.NET技术社区
创建于2007-09-28

5.8w+

社区成员

.NET技术交流专区
申请成为版主
帖子事件
创建了帖子
2004-10-26 06:56
社区公告
暂无公告