windows vista sp1下的mono 2.10 HttpWebRequest总是抛出超时异常

时间:2011-03-03 11:03:52

标签: mono httpwebrequest

HttpWebRequest总是抛出超时异常,然后在Windows Vista SP1 32位下以单声道2.10运行。同一个请求成功完成,然后在同一台机器上的Microsoft .Net下运行。以下是代码:

string url = "http://maps.googleapis.com/maps/api/geocode/xml?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=false";
try
{
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
    Console.WriteLine(request.GetResponse());
}
catch (Exception ex)
{
    Console.WriteLine(ex.Message);
} 

更新:

单声道版本:

c:\Program Files\Mono-2.10\bin>mono -V
Mono JIT compiler version 2.10 (tarball)
Copyright (C) 2002-2011 Novell, Inc and Contributors. www.mono-project.com
    TLS:           normal
    SIGSEGV:       normal
    Notification:  Thread + polling
    Architecture:  x86
    Disabled:      none
    Misc:          softdebug
    LLVM:          supported, not enabled.
    GC:            Included Boehm (with typed GC and Parallel Mark)

3 个答案:

答案 0 :(得分:2)

不确定它是否与此相关,但我遇到了同样的问题(好吧,无论如何都是相同的症状)并且发现它是由在本机代码中创建的线程使用HttpWebRequest引起的。 (此线程后来运行了一个PInvoked托管代码的回调。)

我的问题是通过在托管代码中创建一个工作线程并将HttpWebRequest的所有用法混合到其中来解决的。

我已将其发布为mono bug

答案 1 :(得分:0)

我无法在Windows 7 x64上使用Mono 2.10重现。

c:\ Users \ Owner \ Development \ monobugs> C:\ Mono-2.10 \ bin \ mono.exe -V Mono JIT编译器版本2.10(tarball) 版权所有(C)2002-2011 Novell,Inc和贡献者。 www.mono-project.com         TLS:正常         SIGSEGV:正常         通知:线程+轮询         架构:x86         禁用:无         杂项:softdebug         LLVM:支持,未启用。         GC:包含Boehm(带有键入的GC和平行标记)

c:\ Users \ Owner \ Development \ monobugs> C:\ Mono-2.10 \ bin \ mono.exe http.exe System.Net.HttpWebResponse

答案 2 :(得分:0)

在Mono 2.10.2中,如果使用此代码,则调用paypal超时异常:

HttpWebRequest objRequest = 
  (HttpWebRequest)WebRequest.Create("https://api-3t.sandbox.paypal.com/nvp");
objRequest.Timeout =15000;
objRequest.Method = "POST";
objRequest.ContentLength = strPost.Length;
using (StreamWriter myWriter = new 
  StreamWriter(objRequest.GetRequestStream()))
            myWriter.Write(strPost);

在GetRequestStream()中导致异常:

    System.Net.WebException: The request timed out
      at System.Net.HttpWebRequest.GetRequestStream () [0x0005f] in 
    /usr/src/redhat/BUILD/mono-                2.10.2/mcs/class/System/System.Net/HttpWebRequest.cs:752
      at NVPAPICaller.HttpCall (System.String NvpRequest) [0x00000] in         <filename 
    unknown>:0

    --------------------------------------------------------------------        ------------
    Version information: Mono Runtime Version: 2.10.2 (tarball Mon Apr         18 
    18:57:39 UTC 2011); ASP.NET Version: 2.0.50727.1433

你应该降级到Mono 2.10的第一个版本,看起来这只发生在2.10.2中。