Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#/asp.net-如何捕捉;System.Web.HttpException:请求超时;?_C#_Asp.net_Itextsharp_Httprequest - Fatal编程技术网

c#/asp.net-如何捕捉;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

在我的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;
        }
    }
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
),但这将允许您记录并解决此问题。或者在错误发生后将用户重定向到另一个页面。