0

所以我正在使用“ Updater.exe ”,它正在我的网络服务器上读取XML文件。更新程序检查是否有可用的程序的新版本传输新文件(替换旧文件)并运行它。(文件名是乱码,因为我不希望用户直接运行它,它必须通过更新程序(在 p.StartInfo.UseShellExecute = false; 的帮助下运行它;))。

我现在遇到了一个非常奇怪的“错误”或者我应该如何称呼它。

假设我在 1 周后制作了一个新版本。我也更新了应用程序的程序集信息和 XML 文件版本。现在,当我运行 UPDATER.exe 时,他没有看到更新的 XML 内容,告诉他有新版本可用。当我想通过我的网络浏览器检查文件时,它也显示了旧内容(以前的版本)的意思,应用程序是最新的,这是错误的。

在我按下 Chrome 中的“刷新”按钮后,我显示的内容被更新并且再次运行 Updater.exe工作正常

我没有任何想法实际上发生了什么。在浏览器中“刷新”页面与我的应用程序有什么关系?

从 MSDN 检查 XMLTextReader 类,它说:

表示提供对 XML 数据的快速、非缓存、只进访问的读取器。所以是的,在互联网上搜索告诉我应该查找“缓存”问题,这让我在阅读课程描述时更加困惑。经过这么长时间没有更新后在浏览器中刷新后,所有下一次更新都可以正常工作。似乎“大停顿”总是造成这个问题。

无论如何,我很想找到解决方案。也许只有我有这个问题。但我不想从使用该应用程序的用户那里看到这个问题。他们没有时间或知识来“刷新”任何东西。它只需要工作。

XML 示例在这里:

<?xml version="1.0" encoding = "utf-8" standalone="yes"?>
<Application>
    <version>2.0.0.16</version>
    <url>http://server/folder/gibberish.extension</url>
</Application>

还有一些我用来读取 XML 的代码。

Version newVersion = null;
string xmlUrl = "http://server/folder/file.xml";

XmlTextReader reader = null;
try
{
    reader = new XmlTextReader(xmlUrl);
    reader.MoveToContent();
    string elementName = "";
    if ((reader.NodeType == XmlNodeType.Element) && (reader.Name == "Application"))
    {
        while (reader.Read())
        {
            if (reader.NodeType == XmlNodeType.Element)
            {
                elementName = reader.Name;
            }
            else
            {
                if ((reader.NodeType == XmlNodeType.Text) && (reader.HasValue))
                {
                    switch (elementName)
                    {
                        case "version":
                            newVersion = new Version(reader.Value);
                            break;

                            case "url":
                                downloadUrl = reader.Value;
                                break;
                    }
                }
            }
        }
    }
}
catch (Exception ee)
{
    //catch error
}

我尽我所能(用我简单的英语知识)在这里尽可能详细地描述了这个问题。我没有运气搜索互联网。我希望这不会导致重复。如果您有任何其他问题,请随时提出。我一定会为您提供解决这个奇怪难题所需的所有信息。

最好的问候,迈克

4

1 回答 1

0

我首先想到的是 CDN。您是否使用任何类型的 CDN,例如 CloudFlare?CloudFlare 和类似的 CDN 会在短时间内缓存您的内容,从而导致这种效果。

于 2014-11-04T13:17:36.253 回答