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)
答案 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中。