【发布时间】:2017-06-20 17:40:00
【问题描述】:
我正在使用 Enterprise Tester API 来导入和更新 Web 应用程序上的内容。该程序可以正常运行几个小时,但偶尔会遇到这个未处理的异常:
EnterpriseTester.API.Client.dll 中出现“System.Net.Http.HttpRequestException”类型的未处理异常
附加信息:System.Net.Http.HttpRequestException 状态码不表示成功:500(内部服务器错误)
此时,Visual Studio 在发生此异常的行处中断。但是,当我点击“继续”时,程序会再次正常执行。
从网上搜索,看来我应该使用try catch 块来处理异常。我还希望能够稍等片刻,再次执行同一行以访问 API。
try
{
client.UpdateScriptRun(Id,Run);
}
catch (HttpRequestException e)
{
Console.Writeline("HttpRequestException: {0}", e.Message);
Thread.Sleep(1000);
client.UpdateScriptRun(Id,Run);
}
我不确定这样的事情是否能解决问题,或者我是否需要寻找完全不同的解决方案。
如果您能指导我找到适合此问题的解决方案,我们将不胜感激。谢谢!
【问题讨论】:
-
您在上面发布的代码是否在 WebApiController 中运行?如果第一次调用引发异常,为什么要让 POST 挂起?为什么不从您的控制器返回 500,然后让您的客户端再试一次?
-
@maccettura 感谢您的提问。上面的代码来自控制台应用程序。该应用程序正在将我桌面上的一千多个文档/脚本导入 Enterprise Tester。 “UpdateScriptRun”是我的程序调用 POST 的 API 方法之一。如果我返回 500,那么客户端将不得不再次从头运行该程序。作为替代解决方案,您有什么建议?
标签: c# visual-studio asp.net-web-api exception-handling httprequest