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 に答える