【发布时间】:2019-12-16 01:58:48
【问题描述】:
我目前有两个独立的项目,一个是带有 .NET Framework 4.7.2 的 WPF 应用程序,另一个是带有 ASP.NET Core 3.1 的控制台应用程序。控制台应用程序也曾经是 .NET 4.7.2,但我刚刚将其移至 Core。
WPF 应用程序向控制台应用程序发送一个对象,控制台应用程序对其进行处理并返回响应。我目前的问题是 WPF 应用程序成功发送对象,控制台应用程序接收它并执行它需要的操作,但是当它发送响应时,WPF 应用程序只是挂起并且必须完全停止。这是两者的代码:
WPF 应用程序(在将控制台移至核心之前运行良好):
static async Task SendRequest(UploadDetails u)
{
System.Diagnostics.Debug.WriteLine(Newtonsoft.Json.JsonConvert.SerializeObject(u));
HttpResponseMessage response = await _client.PostAsJsonAsync(_clientUrl, u);
if (response.IsSuccessStatusCode)
{
var responseLink = await response.Content.ReadAsStringAsync();
responseLink = responseLink.Replace("\"", "");
System.Diagnostics.Debug.WriteLine("SUCCESSFUL UPLOAD"); //TODO: Add response
Messenger.Default.Send(new NotificationMessage(responseLink));
}
else
{
System.Diagnostics.Debug.WriteLine("UNSUCCESSFUL UPLOAD"); //TODO: Add response
}
}
控制台应用程序(甚至使用邮递员发送正确的响应):
[HttpPost("upload")]
public ActionResult Upload(UploadDetails data)
{
try
{
Task.Factory.StartNew(() => { _Uploader.Upload(data); });
return Ok("Started");
}
catch (Exception e)
{
return NotFound();
}
}
任何帮助将不胜感激。
【问题讨论】:
-
你能贴出控制台应用程序启动逻辑的代码吗......另外,如果你在“return OK”行放置一个断点,它会被命中吗?
-
另外请告诉我们调用 SendRequest 的代码
-
Send Request 只是一种标准方法,与任何其他方法一样。它的名称没有什么特别之处。请注意,在我将控制台应用程序更改为 Core 之前,它工作得非常好。还有启动逻辑的哪一部分?是的,它正确返回正常,我提到它与邮递员@Darkonekt 正确返回
-
我不是在谈论邮递员......可以在此处设置断点“if (response.IsSuccessStatusCode)”并查看响应以查看它是否返回 404。此外,我确实需要查看调用 SendRequest 的方法,因为它是异步的,它必须被正确调用或者它可以导致应用程序由于死锁而挂起
-
我需要查看整个启动逻辑...我想看看您使用的是哪种控制器...您的路由设置是什么样的等等。
标签: c# wpf .net-4.7.2 asp.net-core-3.1