我有一个web服务应用程序,它使用另一个应用程序来保存和加载一个xml文件。w3wp.exe(网络服务用户)阻止访问文件
对文件进行三次访问后,无法再次访问该文件。如果我终止属于NETWORK SERVICE用户的w3wp.exe进程,则所有内容都会重新开始工作,但只有一次。
下面是保存和加载xml文件的代码示例。
public void saveXmlFile(string filename)
{
if (vsqlschema == null)
{
Console.WriteLine("Tried export data without schema");
//TODO: Messagebox
return;
}
FileStream fs = null;
try
{
XmlSerializer serializer = new XmlSerializer(typeof(vsqlSchema));
fs = new FileStream(filename, FileMode.Create, FileAccess.Write);
serializer.Serialize(fs, vsqlschema);
}
catch (Exception e)
{
Console.WriteLine("IO Error: {0}", e.Message);
//TODO: Messagebox
}
finally
{
if (fs != null)
{
fs.Close();
fs.Dispose();
}
}
}
public XmlDocument loadXml(string filename)
{
//XmlReaderSettings xrs = new XmlReaderSettings();
//xrs.XmlResolver = null;
//xrs.DtdProcessing = DtdProcessing.Ignore;
XmlDocument xdoc = new XmlDocument();
try
{
//using (StringReader sr = new StringReader(filename))
//using (XmlReader reader = XmlReader.Create(sr, xrs))
using (XmlTextReader reader = new XmlTextReader(filename)){
xdoc.Load(reader);
reader.Close();
}
}
catch (XmlException xe)
{
errors.Add(string.Format("Line: {0}, Position: {1}::: {2}", xe.LineNumber, xe.LinePosition, xe.Message));
}
return xdoc;
}
任何想法是怎么回事,什么可以是这个
通过“文件无法访问调用Stream.Flush()再一次“,你究竟是什么意思?拒绝访问?打开手柄?你有什么例外吗? – Basic 2013-04-22 19:25:28
加载文件返回null,因为它已经被w3wp.exe打开 – user2307211 2013-04-22 19:42:41