ASPX。NET应用程序,使用XDocument。Load()从XML文件中读取。有时它会抛出IOException static,说明文件无法打开,因为它正被另一个进程使用。我无法通过打开文件并重新加载网站来随意重新创建它。但更奇怪的是,异常发生在Try-Catch块中,我在其中显式捕获系统。IOException。
这是堆栈:
异常类型:IOException
线程信息:线程ID:18线程帐户名称:NT AUTHORITY\NETWORK SERVICE正在冒充:假堆栈跟踪:在System. IO.__Error. WinIOError(Int32 errorCode,String maybeFullPath)在System. IO. FileStream. Init(String path,FileMode模式,FileAccess访问,Int32权限,Boolean useght,FileShare共享,Int32缓冲区大小,FileOptions选项,SECURITY_ATTRIBUTESsecAttrs,String msgPath,Boolean bFromProxy,Boolean useLongPath)在System. IO. FileStream. ctor(String path,FileMode模式,FileAccess访问,FileShare共享,Int32缓冲区大小)在System. Xml. XmlDownloadManager. GetStream(Uri uri,ICrepedia als凭据,IWebProxy代理,Request estCachePolicy缓存策略)在System. Xml. XmlUrlResolver. GetEntity(Uri绝对在System. Xml. Linq. XDocument. Load(String uri,LoadOptions选项)中创建(String inputUri,XmlReaderSetting设置,XmlParserContext inputContext)。Xml. Linq。XDocument. Load(String uri)
在StatTick。控件。ChartSlider.getXMLFile(String url)在远程路径\StatTick\控件\ChartSlider.ascx.cs:在StatTick的第27行。控件。ChartSlider。Page_Load(对象发送者,EventArgs e)在远程路径\StatTick\控件\ChartSlider.ascx.cs:第21行
代码如下:
private XDocument getXMLFile(string url)
{
XDocument tempDoc;
t("Looking For XML File");
int tryCount = 0;
//string URL = "~/tempCharts/imageList.xml";
while (tryCount++ < 10)
{
try
{
tempDoc = XDocument.Load(Server.MapPath(url));
return tempDoc;
}
catch (IOException)
{
t("Error accessing XML File, sleeping for 10ms and then trying again\r\nTryCount: " + tryCount.ToString());
Thread.Sleep(10);
continue;
}
}
return null;
}
希望有人能为我提供一些关于这件事的见解。
谢啦
编辑好这里是我所做的,我将做一些测试,以验证它不再抛出感谢快速反应!:
while (tryCount <= 10)
{
try
{
using (FileStream fStream = new FileStream(Server.MapPath(url), FileMode.Open, FileAccess.Read, FileShare.Read))
{
XDocument xDoc = XDocument.Load(fStream);
foreach (XElement xe in xDoc.Descendants("ImageUrl"))
{
t("Added: " + xe.Value);
tempImageUrlList.Add(xe.Value);
}
t("Done with Image List!");
}
return tempImageUrlList;
}
catch (Exception)
{
t("Error access XML File, sleeping for 10ms and then trying again\r\nTryCount: " + tryCount.ToString());
Thread.Sleep(10);
continue;
}
}
我认为错误是由于门禁权限的文件,所以请给读/写权限的文件,然后尝试读取文件。
改为使用流,并使用它加载XML。您可以确保使用using语句关闭了底层流。
using (Stream s = File.OpenRead(Server.MapPath(url)))
{
XDocument.Load(s);
}
或
using (FileStream fs= new FileStream(Server.MapPath(url), FileMode.Open,
FileAccess.Read, FileShare.Read))
{
XDocument.Load(fs);
}
;
我有一个存储过程似乎没有正确记录错误。 代码有错误,但 catch 块似乎未生效。 try块相当长,但错误部分很简单,并且在最后出现,所以我已经对此进行了预测。 proc失败的错误是我们的老朋友“列名或提供的值的数量与表定义不匹配”。我已经修复了这个错误 - 这是一个愚蠢的懒惰错误 - 但我感到困惑为什么我的错误日志记录过程似乎没有工作 - 没有行入到我的 ExtractsErrorLog 表中。
我试图用selenium和Firefox捕获http://www.flipkart.com url的屏幕。 它拍摄整个页面的屏幕快照,但它显示的内页图像对许多其他图像不可用。我无法纠正它。帮帮我.
我正在查看Java SE7的新功能,目前我正在: http://docs.oracle.com/javase/7/docs/technotes/guides/language/catch-multiple.html 关于捕获多重功能,当我遇到这个语句时: 注意:如果一个捕捉块处理多个异常类型,那么捕捉参数是隐式最终的。在这个例子中,捕捉参数ex是最终的,因此您不能在捕捉块中给它赋值。 我从未注意到
考虑以下几点: 为什么第一个版本是编译错误,当我已经声明lambda是可变的,并通过值捕获(我认为是它的副本)? 使用clang(x86_64-apple-darwin14.3.0)和Visual C(vc120)进行测试,这是错误消息的来源。
请求(正文)
我使用以下代码设置了一个异常处理程序 我正在使用Spring Security 3.1。当我尝试在没有身份验证的情况下执行操作时,应用程序会引发 AccessDeniedException。它永远不会出现这种方法。但与其他例外情况一样工作正常。这是它应该工作的方式吗?还是我的代码有问题? 这看起来像一个解决方案。但是,如果我能在一个点上处理异常,那就更好了。 这是我的配置文件 更新 此处,用户未通