c#/asp.net-如何捕捉;System.Web.HttpException:请求超时;?
在我的asp.net/c#项目中,我使用iTextsharp dll读取许多pdf文档中的文本,但有时会出现此错误 System.Web.HttpException:请求超时 但实现这一点的代码是:c#/asp.net-如何捕捉;System.Web.HttpException:请求超时;?,c#,asp.net,itextsharp,httprequest,C#,Asp.net,Itextsharp,Httprequest,在我的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 PdfRea
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;
}
}
public static bool\u pdf\u是否有\u关键字(string关键字,string pdf\u src)
{
尝试
{
PdfReader PdfReader=新PdfReader(pdf_src);
字符串文本;
int count=pdfReader.NumberOfPages;
对于(int page=1;page您正在捕获异常,但由于它是ThreadAbortException,框架将自动重新抛出它。有关详细信息,请参阅
问题是,您的PDF关键字搜索代码是(有时)花费的时间比指定的HTTP执行超时时间长。我不知道Sharepoint的默认超时时间是多少,但您应该能够增加它。我认为您的try
没有捕获此异常的原因是,您得到的异常不是从代码本身引发的,而是从服务器引发的
这样想:
- 你的代码运行得很好,只是花了很长时间
- 服务器监视请求所用的时间,终止请求并引发异常
因此,您的代码实际上不会引发该异常
现在,如果您想了解它或记录它,您可以在Global.asax
文件中使用Application\u 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请求对象并重定向用户
希望这有帮助。您是如何运行的?在Visual Studio中?请发布stacktrace。不,这是一个在sharepoint 2010中运行的Web部件(因此在服务器端),如果页面将进入未处理的错误状态,我如何获取此堆栈跟踪?如果我能够捕获错误,我可以获取堆栈跟踪。我怀疑这甚至不是自PdfReader(字符串文件名)以来引发该异常的代码部分从文件而不是url读取。我的猜测是,此操作花费的时间太长,http请求超时。@christian,不,它也可以从pdf路径读取,因为它大部分时间都工作,但有时会出现请求超时的未处理错误。我可以重定向用户,但我不知道如何检测何时有request time out(在页面进入错误屏幕之前)。正如我所说,页面超时是您的代码外部的。我不确定是什么代码引发了异常(即,您将在哪里放置try
),但这将允许您记录并解决此问题。或者在错误发生后将用户重定向到另一个页面。