![](/img/trans.png)
[英]Asp.Net C# Page Validate Error on post: 'Page.IsValid' threw an exception of type 'System.Web.HttpException'
[英]c#/asp.net - How to catch “System.Web.HttpException: Request timed out”?
在我的asp.net/c#项目中,我使用iTextsharp dll从许多pdf文档中读取文本,但有时我会收到此错误
System.Web.HttpException:请求超时。
但是执行此操作的代码是:
public static bool does_pdf_have_keyword(string keyword, string pdf_src)
{
try
{
PdfReader pdfReader = new PdfReader(pdf_src);
string currentText;
int count = pdfReader.NumberOfPages;
for (int page = 1; page <= count; page++)
{
ITextExtractionStrategy strategy = new SimpleTextExtractionStrategy();
currentText = PdfTextExtractor.GetTextFromPage(pdfReader, page, strategy);
if (currentText.IndexOf(keyword, StringComparison.OrdinalIgnoreCase) != -1) return true;
}
pdfReader.Close();
return false;
}
catch
{
return false;
}
}
那么为什么页面在try catch中遇到未处理的异常并且catch应该捕获所有内容?
我认为你的try
没有捕获这个异常的原因是你获得的异常不会从你的代码本身抛出,而是从服务器抛出。
以这种方式思考:
因此,您的代码实际上不会引发该异常。
现在,如果您想了解它或记录它,您可以在Global.asax
文件中使用Application_Error
方法(假设您可以访问它,我不确定它如何与SharePoint一起使用)。
例如,在我的一个Web项目中,我想记录所有错误,甚至是未捕获的错误。 所以我做的是这样的:
protected void Application_Error(object sender, EventArgs e) {
//Log ALL uncaught exceptions
Exception exc = Server.GetLastError();
if (exc is HttpUnhandledException) {
exc = Context.Error.InnerException;
}
//Log error here
}
除了将其记录下来,我不确定您能做很多事情。 我不知道在页面生命周期中发生了什么,所以我不确定你是否可以做一些事情,比如获取当前的HTTP请求对象并重定向用户。
希望这可以帮助。
您正在捕获异常,但是,由于它是ThreadAbortException,因此框架会自动将其抛出。 有关更多信息,请参见此处
问题是您的PDF关键字搜索代码(有时)花费的时间超过指定的HTTP执行超时。 我不知道Sharepoint的默认超时是什么,但你应该能够增加它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.