【问题标题】:Compact Framework - WebRequest sometimes fails for no reason?Compact Framework - WebRequest 有时会无缘无故失败?
【发布时间】:2010-10-04 10:48:00
【问题描述】:

我有一个网络服务,我通过 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;
        }

    }

我收到响应的文件始终相同,并且始终可以从我的 PC 访问。仅当 Web 服务(与 html 文件位于同一目录中)错误时,它似乎才会失败。会不会有关系?

或者,有没有更好的方法来查看该文件是否存在于网络上?

【问题讨论】:

    标签: web-services windows-mobile compact-framework c#-2.0


    【解决方案1】:

    当 PDA 和 Internet 之间的链接失败时,我遇到了类似的情况。 WebRequest 会自动打开 GPRS/HSDPA 连接,可能是那个级别的问题。

    【讨论】:

      【解决方案2】:

      我得到的错误只是超时。 IE。它坐在那里直到 30 秒过去,然后跌倒。令人讨厌的是,它仅在 Web 服务失败或超时时才会发生。这就像网络服务失败正在锁定虚拟目录。

      pda和网络之间的网络连接没有问题。网络服务在我的网络上本地,所以互联网没有发挥作用。我只是使用 ActiveSync 连接让我的 PDA 与网络通信。

      【讨论】:

        【解决方案3】:

        我发现一半的问题是设备数据连接。尝试在设备上的袖珍 IE 中手动输入 url。如果这可行,那么您的应用程序应该可以工作。如果没有,那么您需要先整理设备数据连接设置。如果您通过 ActiveSync(或 WMDC)连接尝试更改 Auto / Work / Internet 之间的连接设置,这有时会有所帮助。

        至于如何测试该URL是否存在。使用 HEAD 请求而不是 GET 请求。这样,您就不会只获得返回的标头的所有数据。我不是 C# 人,所以我不知道如何执行 HEAD 请求而不是 GET 请求。

        【讨论】:

          【解决方案4】:

          该 URL 始终适用于移动设备上的 IE - 它只是不适用于应用程序。因此,就好像应用程序被锁定无法发出请求,或者我的测试代码有问题(根据我的原始帖子)。

          【讨论】:

            【解决方案5】:

            是的,摆脱包罗万象并获取特定的异常消息,这样您就可以了解更多关于正在发生的事情。

            我发现在 CF.NET 中工作时 System.Net.HttpWebRequest.finishGetResponse() 经常出错,而且很可能是由于信号不佳导致数据连接中断。

            【讨论】:

              【解决方案6】:

              我改用 SDF 2.3 的 Ping 组件。该错误始终是超时并且仅在 Web 服务出错时发生。仍然无法解释,但我想我所做的检查无论如何都是一种糟糕的方式。

              【讨论】:

                猜你喜欢
                • 2011-07-02
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2019-02-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多