Mono / Linux和wininet.dll

时间:2012-10-18 02:56:19

标签: c# mono wininet

我有一个命令行C#程序,使用Visual C#2010和Windows 7编译并运行良好。它还可以在Linux / Mono(2.10)上编译并启动,但随后就可以了。 (该程序使用第三方DLL从远程服务器获取数据。)

在调试器中运行它,我看到它似乎在等待DNS查找。所以我对它进行了DNS查找,粘贴在IP地址中。但它仍然挂起,并且进入调试器显示三个线程都坐在那里等待:

  • System.Threading.Monitor.Wait(超时设置为-1)
  • System.Threading.Thread.Sleep
  • System.Threading.WaitHandle.WaitOne

我使用MoMA来分析DLL。我不确定它是多么准确,因为它与Mono 2.8相匹配,我使用的是2.10.8.1,但它说Socket.Dispose()是一种缺失的方法。然后是32个[MonoTodo]项目,其中30个是Type.op_Equality或Type.op_Inequality。其他两个是CredentialCache.get_DefaultCredentials()MemoryMappedFile.CreateOrOpen()

但引起我注意的是,在报告的底部,GetWindowsSocksProxy有两个条目,变成SingleServerConnection.InternetQueryOption,P / Invoke库是wininet.dll。这可能是相关的吗?

那么,我能做些什么吗?例如。我可以将该DLL从Windows机器复制到我的linux机器吗?如果是的话,我该把它放在哪里?

P.S。我想知道连接问题。所以我使用WebClient进行了快速测试Mono,效果很好。但一个有趣的区别是非工作脚本在首次需要连接到某些东西时加载“/usr/lib/mono/gac/Mono.Posix/4.0.0.0__0738eb9f132ed756/Mono.Posix.dll [External]” 。但我的WebClient从未这样做过。

0 个答案:

没有答案