由于各种原因,我需要使用HttpWebRequest而不是内置的WWW类来调用Unity项目中的Web服务。我发现Request.EndGetResponse在某些情况下会挂起。附加调试器时问题会加剧 - 它不时会在没有调试器的情况下发生,但是在附加调试器的情况下接近100%的时间。只有在我使用HTTPS调用Web服务时才会发生这种情况。
我插上Wireshark看两条痕迹。奇怪的是,附加调试器时的跟踪包括“握手失败”,其中没有调试器的跟踪没有。另一个有趣的事情是,有效的跟踪包括两个[FIN,ACK]消息,可能来自其他失败的尝试。
最终我认为我遇到了Mono 2.6线程池的一些已知问题。也就是说,我不明白EndGetResponse正在做什么可能导致它挂起 - 我认为这是一个同步操作。我也不明白附加调试器会如何影响这个问题。
如果那里有任何单声道专家,我会很感激任何见解!