0

我一直在测试我的代码以在本地保存到 XML 文件中,并且工作正常。但是我刚刚将它上传到我的服务器并且它无法正常工作。我将路径更改为 xml 文件的路径,但仍然没有运气。这是我的本地代码...

public void AddNodeToXMLFile(string XmlFilePath, string NodeNameToAddTo)
    {
        //create new instance of XmlDocument
        XmlDocument doc = new XmlDocument();

        //load from file
        doc.Load(XmlFilePath);

        //create main node
        XmlNode node = doc.CreateNode(XmlNodeType.Element, "Level", null);

        //create the nodes first child
        XmlNode mapname = doc.CreateElement("map");
        //set the value
        mapname.InnerText = mapsave.Value;

        // add childes to father
        node.AppendChild(mapname);

        // find the node we want to add the new node to
        XmlNodeList l = doc.GetElementsByTagName(NodeNameToAddTo);
        // append the new node
        l[0].AppendChild(node);
        // save the file
        doc.Save(XmlFilePath);
    }

protected void btnSave_Click(object sender, EventArgs e)
    {
        if (mapsave.Value.ToString() == "")
        {
            lblResult.Text = lblError.Value;
        }
        else
        {
            AddNodeToXMLFile("C:\\Users\\Glen.Robson\\Documents\\Visual Studio 2010\\Projects\\Project1\\Project1\\Scripts\\UserMaps.xml", "TileMaps");
        }

    }

因此,当我上传到服务器时,我将 AddNodeToXMLFile() 的路径更改为:

"http://www.mydomain.com/Scripts/UserMaps.xml"

但这不起作用......谁能告诉我文件路径应该是什么?

4

2 回答 2

2

您无法更改 URL 的路径...服务器上的代码仍然需要知道服务器上文件的物理路径。它无法根据 URL 确定文件的位置。

为什么不使用特定于应用程序的路径...

AddNodeToXMLFile(VirtualPathUtility.ToAbsolute("~/Scripts/UserMaps.xml"),"TileMaps");

然后在您的功能中,您需要将虚拟路径“映射”到服务器上的实际物理路径......

public void AddNodeToXMLFile(string XmlFilePath, string NodeNameToAddTo)
{
   XmlFilePath = Server.MapPath(XmlFilePath);
   ...

此外,您需要确保在服务器上正确设置了权限——这意味着 ASP.NET 应用程序在 IIS 上运行的进程能够直接写入

于 2012-08-09T11:58:53.047 回答
1

简而言之:您所要求的无法完成。如果您想更改服务器上的内容,您需要在服务器上有一个程序或脚本处理您的请求。只有在服务器上执行的程序/脚本才能更改服务器上的文件。

于 2012-08-09T11:56:28.477 回答