代码之家  ›  专栏  ›  技术社区  ›  spilliton

在c#.Net 2.0中调用web服务时发生超时错误

  •  0
  • spilliton  · 技术社区  · 15 年前

    我继承了一些代码,对处理web服务不太熟悉。以下是项目的设置方式:

    在“Web引用”下,有一个对我们正在使用的Web服务的引用。在那项服务中参考文献.cs有一个继承自SoapHttpClientProtocol的类,该类有一个名为CandidateAdd()的函数,该函数调用这个。调用(我认为这是实际的web方法调用)

    webRequest.KeepAlive = false;
    webRequest.MaximumAutomaticRedirections = 30;
    System.Net.ServicePointManager.MaxServicePointIdleTime = 18000;
    webRequest.AllowAutoRedirect = true;
    //webRequest.Timeout = 18000;
    

    并返回web请求对象。

    应用程序的性质是这样的,这个web方法可能一天只被调用50次左右,所以它不像服务器陷入困境或者什么的,它更像是一些设置不正确的东西。

    提前感谢您的帮助!

    1 回复  |  直到 15 年前
        1
  •  1
  •   John Saunders    15 年前

    请发布您看到的完整异常,包括所有InnerException。例如:

    try {
        using (CandidateService svc = new CandidateService()) {
            svc.CandidateAdd();
        }
    }
    catch (Exception ex) {
        string what_I_should_post = ex.ToString();
    }
    

    您可能认为这很明显,但堆栈跟踪可能是一个很大的线索。

    然后,您将需要了解在发生此超时时服务正在做什么。它可能正在执行一个数据库操作来“添加”这个“候选者”——这个操作在服务器端是否成功?然后你可能会想知道是什么花了这么长时间。

    带有派生类的结构是我以前从未见过的,但这是一个合理的想法。这可能不是问题所在。我不会在调试期间弄乱这些代码,但是如果您对此有顾虑,可以临时将代码从一个类复制到另一个类。这样,它们都将具有相同的WebRequest参数。