Tho*_*ler 7 c# localhost httpwebrequest
我有一个非常奇怪的问题System.Net.HttpWebRequest,这让我疯狂:当我用localhost地址运行时,它要么非常慢(大约30秒),要么在大多数情况下完全超时.这只发生在目标请求中localhost,并且仅来自C#代码.
具体来说,以ASP.NET Web API项目为例,当我有这个代码时:
[Test]
public void TestRequest()
{
var request = WebRequest.Create("http://localhost:64497/api/values");
WebResponse response = request.GetResponse();
}
Run Code Online (Sandbox Code Playgroud)
..大部分时间都会因此异常而失败:
System.Net.WebException:无法连接到远程服务器
----> System.Net.Sockets.SocketException:连接尝试失败,因为连接方在一段时间后没有正确响应或建立连接失败,因为连接的主机未能回复127.0.0.1:64497
通过检查.NET代码,我将错误跟踪到WSAConnect API返回一个非null值,但我看不出这有多大帮助.(但是,这是一个32位API,而我在64位系统上运行.可能有一些奇怪的32/64bit问题吗?)
当我使用localhost之外的地址(例如http://www.google.com)运行上述代码时,它的行为正常,我的响应时间大约为1秒.此外,当我从不同的客户端(我使用Chrome的高级REST客户端)提交上述请求时,我得到了正常的行为:由于初始编译,第一个请求的延迟时间约为5-8秒,响应非常短所有后续请求的时间(20-40毫秒).
鉴于这些发现,对我来说似乎很明显,问题必须来自于特定于System.Net.HttpWebRequest课程实施的某些内容......
Web应用程序本身托管在IIS Express上,但我很确定这是无关紧要的,因为上述请求永远不会到达Web服务器(我通过从命令行运行IIS Express然后检查来自的请求来检查这两者以及每个ProcessMonitor).
更多信息:我正在运行Win 8.1 64位和VS 2013 SP4专业版.系统的HOST文件未经修改,即它不包含任何条目.
到目前为止我尝试过的事情:
localhost到127.0.0.1我不明白问题是什么,我在网上找不到任何相关信息.我甚至没有更多的想法,我可以尝试追踪错误.换句话说:我完全坚持这一点,它有效地阻止我编写针对本地托管网站的任何集成测试.任何帮助/提示/提示都非常感谢.
小智 0
只是为了检查这一部分:“通过检查 .NET 代码,我找到了 WSAConnect API 返回非空值的错误,但我看不出这有多大帮助。(但是,这是一个 32 位API,而我在 64 位系统上运行。会不会有一些奇怪的 32/64 位问题?)”
确保在 IIS 中,对于应用程序池,已启用 32 位(默认为禁用)。
另外,我假设绑定设置正确。(最后一部分[绑定]应该是一条评论,但我没有代表 - 它显然被删除了 - 或者将会被删除)
| 归档时间: |
|
| 查看次数: |
2066 次 |
| 最近记录: |