C# 从网站获取html

C# 从网站获取html,c#,silverlight,windows-phone-7,httpwebrequest,C#,Silverlight,Windows Phone 7,Httpwebrequest,我可以通过以下方式从网站获取html代码: public void Test() { WebClient client = new WebClient(); client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(client_DownloadStringCompleted); client.DownloadStringAsync(new Uri("http://

我可以通过以下方式从网站获取html代码:

public void Test()
{
    WebClient client = new WebClient();
    client.DownloadStringCompleted += 
        new DownloadStringCompletedEventHandler(client_DownloadStringCompleted);
    client.DownloadStringAsync(new Uri("http://testUrl.xml"));
}

void client_DownloadStringCompleted(object sender, 
                                    DownloadStringCompletedEventArgs e)
{
    string html = e.Result;
    //Now do something with the string...
}
但我需要每30秒更新一次html,所以我写道:

public void TestMain()
{

    DispatcherTimer Timer = new DispatcherTimer()
    {
        Interval = TimeSpan.FromSeconds(30)
    };
    Timer.Tick += (s, t) =>
    {
        Test();
    };
    Timer.Start();
}

我更改了xml,但得到了相同的html,怎么了?

网络客户端中包含了缓存。如果您两次请求相同的URI,第二次它将直接从缓存中获取整个内容

无法在
WebClient
上禁用缓存,因此您有两种解决方法:

  • 使用
    HttpWebRequest
    而不是
    WebClient
  • 向URI添加随机参数:

    client.DownloadStringAsync(new Uri("http://testUrl.xml?nocache=" + Guid.NewGuid()));
    

也许您得到的是相同的HTML,因为它自上次以来没有更改过?…没有,当然我会更改xml文件并检查网站上的HTML是否更改)您是否记得刷新网站?有时缓存不会刷新,因此您将永远看不到差异因此,如果问题不是刷新缓存,我需要做什么来解决此问题?我从来没有想到过,有时我会等待几分钟,然后重试,结果会成功,其他时候,我不得不永远等待,直到我的网站真正意识到我已经改变了它们背后的代码,天知道为什么,我只是把它们留给了itthanks,正好符合我对他的问题的评论