精简版框架 - WebRequest有时无故失败?
我有一个网络服务,我通过PDA与之交谈。在与web服务asmx文件相同的目录中,我有一个html文件,可以从中提取web请求,以查看目录是否可用。精简版框架 - WebRequest有时无故失败?
我使用下面的代码:
/// <summary>
/// Holds the web request for checking the connectivity.
/// </summary>
private static WebRequest m_WebRequest;
/// <summary>
/// Tests the connection to the provided URL.
/// </summary>
/// <param name="url">The URL to test.</param>
/// <returns>True if the URL was resolved.</returns>
public static bool TestUrl(string url)
{
try
{
// Ensure the url is valid
url = url.Replace("http:\\", "http://");
url = url.Replace("\\", "/");
// Create the request
m_WebRequest = WebRequest.Create(url);
m_WebRequest.Timeout = 30000;
// Get the request
HttpWebResponse response = (HttpWebResponse)m_WebRequest.GetResponse();
return true;
}
catch
{
m_WebRequest.Abort();
return false;
}
}
文件我得到的是永远不变的,总是从我的电脑访问的响应。它似乎只在web服务(与html文件位于同一目录中)错误时失败。这可能是相关的吗?
或者,有没有更好的方式来查看该文件是否存在于网络上?
我使用了SDF 2.3的Ping组件。错误总是超时,并且只发生在Web服务错误时。仍然无法解释,但我想我做的支票无论如何都是一种糟糕的方式。
我在PDA和互联网之间的链接失败时经历过类似的事情。 WebRequest自动打开GPRS/HSDPA连接,可能在该级别存在问题。
我得到的错误只是一个超时。即它直到30秒过去,然后摔倒。令人讨厌的是它只发生在Web服务失败或超时时。这就像Web服务失败正在锁定虚拟目录。
pda和网络之间的网络连接没有问题。网络服务位于我的网络上,因此互联网不起作用。我只是使用ActiveSync连接让我的PDA与网络通话。
我发现问题的一半是设备数据连接。尝试在设备上手动输入url到pocket IE中。如果那有效,那么你的应用应该工作。如果没有,那么你需要先清理你的设备数据连接设置。如果通过ActiveSync(或WMDC)连接尝试更改Auto/Work/Internet之间的连接设置,有时会有所帮助。
至于如何测试,看看网址是否存在。使用HEAD请求而不是GET请求。这样你就不会得到所有数据只是返回的头文件。我不是一个C#人,所以我不能帮助如何执行HEAD请求而不是GET请求。
网址始终适用于移动设备上的IE浏览器 - 它只是不适用于应用程序。所以它就好像应用程序被锁定在请求之外,或者我的测试代码有问题(按照我原来的帖子)。
是的,摆脱捕捉所有并获得一个特定的异常信息,以便您可以告诉更多关于发生了什么事情。
当我在CF.NET中工作时,发现我在System.Net.HttpWebRequest.finishGetResponse()中遇到了很多错误,并且由于信号不佳,它们很可能会中断数据连接。
你会得到什么错误? – 2009-01-30 11:04:52