我有一个带有 WebAPI 控制器的 ASP.NET MVC 应用程序,以及一个使用这些控制器的控制台应用程序。控制台应用程序从计划任务运行并从远程源获取数据,对其进行解析,然后在退出之前将其发布到 MVC 应用程序。
这适用于几个控制器,但其中一个调用是在不引发异常的情况下使控制台应用程序崩溃。用于所有控制器的调用者代码:
public async Task<string> Post<T>(string urlRoot, string url, T data)
{
var result = "";
try
{
var httpClient = GetHttpClient(urlRoot);
var response = await httpClient.PostAsJsonAsync(url, data); // Exits here
if (response.IsSuccessStatusCode)
{
result = await response.Content.ReadAsAsync<string>();
}
}
catch (Exception e)
{
Debug.WriteLine(e.ToString());
}
return result;
}
调用时程序退出await httpClient.PostAsJsonAsync(url, data)
。使用断点,既不会到达catch
块也不会if
到达语句。然而,调用正在进行,因为使用正确的数据调用 Web API 控制器。
这些程序共享相同的代码,以便T
通过 API 调用传递。
从输出窗口:
程序“[9640] ProgramName.vshost.exe: Managed (v4.0.30319)”已退出,代码为 0 (0x0)。
我想知道发布数据的大小是否有问题,但我没有找到任何说明大小限制的文档。
所以我的问题是:
- 什么可能导致控制台应用程序过早退出?
- 如何检测到这一点并防止程序退出?