1

サインアップ ページを作成していますが、登録フォームを介してユーザーの詳細を保存するために使用されるファイルは XML ファイルです。以下のコードを使用してエントリを書いているときに、システムが NullReferenceException の例外をスローしています。

 protected void register_Click(object sender, EventArgs e)
{
    try
    {
        //var path = Path.Combine(Request.PhysicalApplicationPath, "App_Data\\PageData.xml");
        XDocument doc = XDocument.Load(Server.MapPath("~/App_Data/userlogs.xml"));
        XElement user = new XElement("user",
            new XElement("fname", fname.Text.ToString()),
            new XElement("lname", lname.Text.ToString()),
            new XElement("dob", dob.Text.ToString()),
            new XElement("uid", uid.Text.ToString()),
            new XElement("pwd", pwd.Text.ToString()),
            new XElement("email", email.Text.ToString()),
            new XElement("lastlog", System.DateTime.Now.ToString())
            );
        doc.Root.Element("users").Add(user);
        doc.Save("userlog.xml");
    }
    catch (Exception exe)
    {
        error.Visible = true;
        error.Text = exe.ToString();
    }
}

私の userslog.xml ファイル形式:-

<users>
    <user>
        <fname>abc</fname>
        <lname>xyz</lname>
        <dob>MM/DD/YYYY</dob>
        <uid>username</uid>
        <pwd>***</pwd>
        <email>pqrs@xyz.com</email>
        <lastlog>DATE:TIME</lastlog>
    </user>
</users>

このコードで新しいタグを作成したい

<users>
    <user>
        <fname>abc</fname>
        <lname>xyz</lname>
        <dob>MM/DD/YYYY</dob>
        <uid>username</uid>
        <pwd>***</pwd>
        <email>pqrs@xyz.com</email>
        <lastlog>DATE:TIME</lastlog>
    </user>
    <user>
        <fname>bcd</fname>
        <lname>lmo</lname>
        <dob>MM/DD/YYYY</dob>
        <uid>username1</uid>
        <pwd>***</pwd>
        <email>pqrs@xyz.com</email>
        <lastlog>DATE:TIME</lastlog>
    </user>
</users>

したがって、コードでファイルを次の望ましい方法で実行する必要があります。

デバッグ時に次のエラーが発生します

4

3 に答える 3

1

与えられたコードから、取得する可能性が 1 つあります。NullReferenceException

1.次のパスに xml ファイルがあるかどうかを確認してください。

~/App_Data/userlogs.xml

--> ファイルは次の場所に配置する必要がありますRootFolder of Project/App_Data/

さらに先に進む前に、次の方法でファイルが存在するかどうかを確認できます。

System.IO.File.Exists(filepath)
{
//true so file exists
//contine
}
于 2013-11-15T03:24:36.347 に答える
0

プログラムをデバッグしてみてください。

プログラムが例外をフローするように、try catch 部分を削除します。

ブレークポイントを追加して、プログラムの実行方法を確認します

これらを試してください:

  • ファイルApp_Data/userlogs.xmlは存在しますか?
  • "doc" オブジェクトは null ですか?

可能であれば、より多くのコードを投稿してください

于 2013-11-15T03:06:42.077 に答える