在这段代码中出现错误,任何人都可以解决 [英] in this code am getting error any one solve this

查看:58
本文介绍了在这段代码中出现错误,任何人都可以解决的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

此代码中出现错误,任何人都可以解决此问题

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Xml;
using System.Data;
public partial class Default2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            XmlDocument doc = new XmlDocument();
            doc.Load(Server.MapPath("C:\\Documents and Settings\\anush\\Desktop"));
            XmlNodeList bookList = doc.GetElementsByTagName("DocumentElement");
            foreach (XmlNode node in bookList)
            {
                XmlElement bookElement = (XmlElement)node;
                string ctry = bookElement.GetElementsByTagName("DocumentElement")[0].InnerText;
                ddl.Items.Add(ctry);
            }
        }
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        DataTable dt = new DataTable();
        DataColumn dc = new DataColumn("id");
        DataColumn dc1 = new DataColumn("DataBaseName");
        dt.Columns.Add(dc);
        dt.Columns.Add(dc1);
        string ct = ddl.SelectedItem.ToString();
        string dataPath = Server.MapPath("C:\\Documents and Settings\\azhar\\Desktop\\appsettings.xml");
        DataSet dSet = new DataSet();
        dSet.ReadXml(dataPath);
        DataRow[] rows = dSet.Tables[0].Select(" DataBaseName= ''" + ct + "''");
        foreach (DataRow dr in rows)
        {
            DataRow myRow = dt.NewRow();
            myRow["id"] = dr["id"];
            myRow["DataBaseName"] = dr["DataBaseName"];
            dt.Rows.Add(myRow);
        }
        grxml.DataSource = dt;
        grxml.DataBind(); 
    }
}

解决方案

错误非常明显:
''C:/Documents and Settings/anusha/Desktop"是物理路径,但是应该是虚拟路径."

 doc.Load(Server.MapPath(" ));

使用物理路径-即在当前PC,硬盘驱动器C,文件夹...上精确指定查找位置的路径...
MapPath用于将虚拟驱动器(即相对于网站的虚拟驱动器)转换为物理驱动器.

完全删除Server.MapPath调用,或者将物理规范替换为虚拟规范.在您的情况下,您将必须删除MapPath,但实际上您不应该假定您将在服务器上进行登录-如果将其加载到常规"网络主机上,则几乎可以肯定不会!


,如果您已经知道文件夹为:

 "  

,则无需使用Server.MapPath.

只要写

 doc.Load(" ); 



希望这能解决您的问题.


in this code am getting error any one solve this

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Xml;
using System.Data;
public partial class Default2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            XmlDocument doc = new XmlDocument();
            doc.Load(Server.MapPath("C:\\Documents and Settings\\anush\\Desktop"));
            XmlNodeList bookList = doc.GetElementsByTagName("DocumentElement");
            foreach (XmlNode node in bookList)
            {
                XmlElement bookElement = (XmlElement)node;
                string ctry = bookElement.GetElementsByTagName("DocumentElement")[0].InnerText;
                ddl.Items.Add(ctry);
            }
        }
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        DataTable dt = new DataTable();
        DataColumn dc = new DataColumn("id");
        DataColumn dc1 = new DataColumn("DataBaseName");
        dt.Columns.Add(dc);
        dt.Columns.Add(dc1);
        string ct = ddl.SelectedItem.ToString();
        string dataPath = Server.MapPath("C:\\Documents and Settings\\azhar\\Desktop\\appsettings.xml");
        DataSet dSet = new DataSet();
        dSet.ReadXml(dataPath);
        DataRow[] rows = dSet.Tables[0].Select(" DataBaseName= ''" + ct + "''");
        foreach (DataRow dr in rows)
        {
            DataRow myRow = dt.NewRow();
            myRow["id"] = dr["id"];
            myRow["DataBaseName"] = dr["DataBaseName"];
            dt.Rows.Add(myRow);
        }
        grxml.DataSource = dt;
        grxml.DataBind(); 
    }
}

解决方案

The error is pretty explicit:
"''C:/Documents and Settings/anusha/Desktop'' is a physical path, but a virtual path was expected."

doc.Load(Server.MapPath("C:\\Documents and Settings\\anusha\\Desktop"));

uses a physical path - i.e. one that specifies exactly where to look - on the current pc, hard drive C, folder ...
MapPath is used to convert a virtual drive (i.e. one that is relative to the web site) into a physical drive.

Either remove the Server.MapPath call completely, or replace the physical specification with a virtual one. In your case, you would have to remove MapPath, but you really shouldn''t assume that you will have a login on the server - if you load this onto a "normal" webhost you almost certainly won''t!


if you already know your folder is:

"C:\\Documents and Settings\\anush\\Desktop"

then you do not need to use Server.MapPath.

Just write

doc.Load("C:\\Documents and Settings\\anush\\Desktop");



Hope this will solve your problem.


这篇关于在这段代码中出现错误,任何人都可以解决的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆