我有一个网络服务,我通过PDA与他交谈。在与webservice asmx文件相同的目录中,我有一个html文件,我从中提取Web请求以查看目录是否可用。
我使用以下代码:
/// <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文件在同一目录中)出错时,它似乎只会失败。这可能是相关的吗?
或者,有没有更好的方法来查看该文件是否存在于网络上?
答案 0 :(得分:0)
答案 1 :(得分:0)
我得到的错误只是暂停。即它坐在那里直到30秒过去,然后摔倒。令人讨厌的是它只在Web服务失败或超时时才会发生。这就像Web服务失败就是锁定虚拟目录。
pda和网络之间的网络链接没有问题。网络服务在我的网络上是本地的,因此互联网不起作用。我只是使用ActiveSync连接让我的PDA与网络通信。
答案 2 :(得分:0)
我发现问题的一半是设备数据连接。尝试手动输入设备上的口袋IE中的URL。如果可行则您的应用程序应该工作。如果没有,那么您需要先设置设备数据连接设置。如果您通过ActiveSync(或WMDC)连接尝试更改自动/工作/互联网之间的连接设置,这有时会有所帮助。
至于如何测试以查看URL是否存在。使用HEAD请求而不是GET请求。这样你就不会获得返回标题的所有数据。我不是C#家伙所以我无法帮助解决HEAD请求而不是GET请求。
答案 3 :(得分:0)
该URL始终适用于移动设备上的IE - 它无法在应用程序中运行。因此,就好像应用程序被禁止发出请求,或者我的测试代码中出现了问题(根据我原来的帖子)。
答案 4 :(得分:0)
是的,摆脱了全能并获得特定的异常消息,以便您可以详细了解正在发生的事情。
我发现在使用CF.NET时,我在System.Net.HttpWebRequest.finishGetResponse()中遇到了很多错误,并且由于信号不良,它们很可能是数据连接中断。
答案 5 :(得分:0)
我使用了SDF 2.3的Ping组件。该错误始终是超时,仅在Web服务出错时发生。仍然无法解释,但我想我正在做的检查是一种不好的做法。