所以我正在使用“ 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
}
我尽我所能(用我简单的英语知识)在这里尽可能详细地描述了这个问题。我没有运气搜索互联网。我希望这不会导致重复。如果您有任何其他问题,请随时提出。我一定会为您提供解决这个奇怪难题所需的所有信息。
最好的问候,迈克