用户同时生成时无法创建文件

时间:2012-10-20 05:19:27

标签: c# asp.net asp.net-mvc file-io

我有一个代码在服务器目录上创建一个xml文件, 这段代码就像魅力一样,直到用户在同一时间处理此代码。 快一毫秒的用户将成功生成一个文件而另一个将丢失它。 请帮帮我们。

public static void XmlOrder(arg_order mod, string NewAddress)
    {
            XmlDocument XDoc = new XmlDocument();
            XmlDeclaration xde = XDoc.CreateXmlDeclaration("1.0", "", "");

            XDoc.AppendChild(xde);

            XmlElement XElemRoot = XDoc.CreateElement("Digital_Order");
            XElemRoot.SetAttribute("xmlns", "");
            XDoc.AppendChild(XElemRoot);

            foreach (arg_order modDetail in mod.arg_orders) {

                XmlElement Xsource = XDoc.CreateElement("Document");
                XElemRoot.AppendChild(Xsource);

                XmlElement XTemp = XDoc.CreateElement("wt_web_Id");
                XTemp.InnerText = modDetail.order_detail_id.ToString();
                Xsource.AppendChild(XTemp);

                XTemp = XDoc.CreateElement("wt_addr");
                XTemp.InnerText = modCompany.qad_no;
                Xsource.AppendChild(XTemp);
            }
            //naming and path
            string name = arg_order_detail.FindAll().Count.ToString() + ".xml";
            string path = ArgenXmlOrderPath + "/" + name;
            XDoc.Save(path);
}

1 个答案:

答案 0 :(得分:2)

这是因为您的用户正在尝试同时写同一个文件 通过将orderID之类的内容添加到文件名中,使文件名唯一。

string name = modDetail.order_detail_id.ToString() + ".xml";
string path = ArgenXmlOrderPath + "/" + name;
XDoc.Save(path);