我有一些托管的 C# 代码,可以在 C++ 通过 COM 的线程上访问。
当我在 C# 代码中创建 HttpWebRequest 时,如果我停用 C++ 端的一些代码,它最初可以工作。但是,当我重新激活所有 C++ 代码时,我的 C# HttpWebRequests 开始失败并出现错误:“应用程序没有调用 WSAStartup,或者 WSAStartup 失败”。这很奇怪,因为 WSAStartup 从不需要从 C# 调用,我想它隐藏在 TCP 堆栈周围的 C# 包装器中。有谁知道真正的错误可能是什么?
编辑:在我的 C++ 代码中,我直接调用了 WSAStartup(),因此我将其删除,现在错误消息已更改为“System.Net.Sockets.SocketException:尝试对非套接字的操作进行操作”。