Skip to content
久久日记本
曾经年少爱追梦,一心只想往前飞
  • 首页
  • 博客
    • 博客历史
    • 主题
    • 个人文集
  • 关于
    • 正在读的书
    • 作品归档
    • 2018作品归档
    • 联系我
  • 友情链接
  • 留言板
❄
❅
❆
❄
❅
❆
❄
❅
❆
❄
.NET

system.web.httpunhandledexception错误

Posted on 2010年11月26日 by 九九 / 1907 Views

最近学会用asp.net创建XML,老师叫我们的是创建XML,修改结点,删除节点,更新节点,但是都是互相独立的文件中进行操作的,我把它们放在一个文件中使用代码,这样是可行的。创建如果是多个人的资料,代码如下:

using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.IO;
//using System.Xml;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    public static bool FilePicDelete(string path)
    {
        bool ret = false;
        System.IO.FileInfo file = new System.IO.FileInfo("myXmlShow.xml");
        if (file.Exists)
        {
            file.Delete();
            ret = true;
        }
        return ret;

    }
    private void CreatXml()
    {
        XElement myxml = new XElement("studentsList",
        new XElement("list",
            new XElement("name", "王二"),
            new XElement("name", "23"),
            new XElement("tel", "136936363636",
                new XAttribute("type", "移动电话")),
            new XElement("tel", "87878787",
                new XAttribute("type", "家庭电话")),

            new XElement("score",
                new XElement("yuwen", "100"),
                new XElement("shuxue", "100"),
                new XElement("yingyu", "100")
                )
                ),
         new XElement("list",
            new XElement("name", "马六"),
            new XElement("age", "22"),
            new XElement("tel", "136935353535",
                new XAttribute("type", "移动电话")),
            new XElement("tel", "56565656",
                new XAttribute("type", "家庭电话")),

            new XElement("score",
                new XElement("yuwen", "99"),
                new XElement("shuxue", "99"),
                new XElement("yingyu", "99")
                )
                )
                );
        try
        {
            myxml.Save(Server.MapPath("myXmlShow.xml"));
            ErrorBox.Text = "创建成功!";
        }

        catch (Exception E)
        {
            ErrorBox.Text = E.Message;
        }
    }
    protected void ButBegin_Click(object sender, EventArgs e)
    {
        CreatXml();
    }
    protected void ButJdudge_Click(object sender, EventArgs e)
    {
        if (!File.Exists(Server.MapPath("myXmlShow.xml")))//如果不存在
        {
            CreatXml();
            if (File.Exists(Server.MapPath("myXmlShow.xml")))
            {
                ErrorBox.Text = "创建成功!";
            }
            else
                ErrorBox.Text = "创建失败,请检查原因!";
        }
        else//如果存在
        {
            ErrorBox.Text = "同名文件已经存在!";
        }
    }
    protected void ButSel_Click(object sender, EventArgs e)//遍历查询
    {
        XElement myXml = XElement.Load(Server.MapPath("myXmlShow.xml"));
        var xmlSelLINQ = from x in myXml.Descendants("list")
                         where (string)x.Element("age") == "22"
                         select x;

        foreach (var item in xmlSelLINQ)
        {
            ErrorBox.Text = item.ToString();
        }
    }
}

注意红色的的尤其是括号和其它标点符号,避免产生错误。

(update:20160323 md貌似不支持颜色诶,这里说的红色是 CreatXml 方法的代码)

!()[http://img.99diary.com/blog/src/201011261555/1.jpg]

检测到有潜在危险的Request.Form值:

!()[http://img.99diary.com/blog/src/201011261555/2.jpg]

原来的句子中使用LINQ查询xml代码是:

    protected void ButSel_Click(object sender, EventArgs e)//遍历查询
    {
        XElement myXml = XElement.Load(Server.MapPath("myXmlShow.xml"));
        var xmlSelLINQ = from x in myXml.Descendants("list")
                         where (string)x.Element("age") == "22"
                         select x;

        foreach (var item in xmlSelLINQ)
        {
            ErrorBox.Text = item.ToString();
        }
    }

很明显是<>不能出现在显示中,自然是这个显示方法错误(见上面红色),查看的一场详细信息中:system.web.httpunhandledexception,查了一下这个问题,
核对了一下老师的代码,这个地方老师写的是:

foreach (var item in xmlSelLINQ)
{
    Response.Write(item.ToString()+"\t");
}

可以看出ErrorBox.Text 和 Response.Write显示的问题,问了网友,若仍然需要用TextBox可以将代码修改如下:

        foreach (var item in xmlSelLINQ)
        {
           ErrorBox.Text =Server.HtmlEncode(item.ToString());
        }

但是这样就恢复正常了,但是当我点击了“XML的LINQ查询”按钮时,显示的为:

&lt;list&gt;   &lt;name&gt;马六&lt;/name&gt;   &lt;age&gt;22&lt;/age&gt;   &lt;tel type=&quot;移动电话&quot;&gt;136935353535&lt;/tel&gt;   &lt;tel type=&quot;家庭电话&quot;&gt;56565656&lt;/tel&gt;   &lt;score&gt;     &lt;yuwen&gt;99&lt;/yuwen&gt;     &lt;shuxue&gt;99&lt;/shuxue&gt;     &lt;yingyu&gt;99&lt;/yingyu&gt;   &lt;/score&gt; &lt;/list&gt;

很明显需要去掉< > 等空格乱码,这时可以使用Replace函数,查询了一下网上的教程:


Replace函数功能: Replace函数一般应用于字符串的替换,Replace可以替换掉一个字符串中的某些特定字符或者子串并返回值。 Replace语法: public string Replace (string oldValue,string newValue) //oldValue表示要替换的字符,后者表示要替换oldValue的所有匹配项的字符 Replace函数用法-C# CODE string str = "www.zhishiku.net"; str = str.Replace("www"," ")//表示将www替换为空串并返回

于是可以把原来的代码改为:

        foreach (var item in xmlSelLINQ)
        {
            string str = Server.HtmlEncode(item.ToString());
            str = str.Replace("&lt;", " ");//表示将&lt;替换为空串并返回
            string newstr = str;
            newstr = str.Replace("&gt;", " ");//表示将&gt;替换为空串并返回
            ErrorBox.Text = newstr;

        }

这样就可以显示出正常的代码了。再去运行原来的程序。及时重复操作,也不会出现上面的那些错误!!!以后可要记好了!!!

ASP.NET
九九
过去的我们,现在的自己,往事,终会随风而逝。 View all posts by 九九 →

Post navigation

Older post
名称中不能包含“:”字符(十进制0×FF1A)
Newer post
让窗体上的控件自动适应屏幕的分辨率改变大小和位置

标签云

2019ncov Android ASP.NET Baby C# C/C++ CSS Div DX11 flask front-end GAE Git Java JJProject JS Life MSSQL MVC OpenSource Oracle Python React React-Native Software Tools Vue Webpack Website Window WP7 乱记 十年旧梦 天气 宝宝成长日记 小说 工作 情感 故障 散文 日记 网新实训笔记 花落梧桐 诗间集 转载

时光机

  • 2023年3月
  • 2023年2月
  • 2022年12月
  • 2022年4月
  • 2022年3月
  • 2022年1月
  • 2021年12月
  • 2021年11月
  • 2021年10月
  • 2021年9月
  • 2021年8月
  • 2021年6月
  • 2021年5月
  • 2021年4月
  • 2021年3月
  • 2021年2月
  • 2021年1月
  • 2020年5月
  • 2019年12月
  • 2019年10月
  • 2019年9月
  • 2019年6月
  • 2019年5月
  • 2019年2月
  • 2019年1月
  • 2018年12月
  • 2018年9月
  • 2018年8月
  • 2018年7月
  • 2018年6月
  • 2018年3月
  • 2018年2月
  • 2018年1月
  • 2017年11月
  • 2017年10月
  • 2017年9月
  • 2017年7月
  • 2017年3月
  • 2017年1月
  • 2016年12月
  • 2016年11月
  • 2016年10月
  • 2016年7月
  • 2016年3月
  • 2016年2月
  • 2016年1月
  • 2015年12月
  • 2015年11月
  • 2015年10月
  • 2015年9月
  • 2015年8月
  • 2015年7月
  • 2015年4月
  • 2015年3月
  • 2015年2月
  • 2015年1月
  • 2014年12月
  • 2014年11月
  • 2014年10月
  • 2014年9月
  • 2014年8月
  • 2014年7月
  • 2014年6月
  • 2014年5月
  • 2014年4月
  • 2014年3月
  • 2014年2月
  • 2014年1月
  • 2013年12月
  • 2013年11月
  • 2013年10月
  • 2013年9月
  • 2013年8月
  • 2013年7月
  • 2013年6月
  • 2013年5月
  • 2013年4月
  • 2013年3月
  • 2013年1月
  • 2012年11月
  • 2012年10月
  • 2012年9月
  • 2012年8月
  • 2012年7月
  • 2012年6月
  • 2012年5月
  • 2012年4月
  • 2012年3月
  • 2012年2月
  • 2012年1月
  • 2011年12月
  • 2011年11月
  • 2011年10月
  • 2011年9月
  • 2011年8月
  • 2011年6月
  • 2011年5月
  • 2011年4月
  • 2011年3月
  • 2011年2月
  • 2010年12月
  • 2010年11月
  • 2010年10月
  • 2010年9月
  • 2010年8月
  • 2010年6月
  • 2010年5月
  • 2010年2月
  • 2010年1月
  • 2009年12月
  • 2009年11月
  • 2009年10月
  • 2009年9月
  • 2009年8月
  • 2009年7月
  • 2009年6月
  • 2009年5月
  • 2009年4月
  • 2009年3月
  • 2009年2月
  • 2009年1月
  • 2008年8月
  • 2008年6月
  • 2008年5月
  • 2008年4月
  • 2008年2月
  • 2007年11月
  • 2007年8月
  • 2007年6月
  • 2007年5月
  • 2007年4月
  • 2007年3月
  • 2007年2月
  • 2007年1月
  • 2006年10月
  • 2006年8月
© 2006 - 2023 久久日记本
Powered by WordPress | Theme: Graphy for 99diary