0

我开发了 ac# 桌面应用程序,它需要托管在服务器上,并且会根据存储在 XML 文件中的查询安排来获取数据。在开发过程中,我使用以下代码读取 XML 文件:

var query = new XPathDocument(@"C:\\Documents and Settings\\XYZ\\Desktop\\productplanningquery.xml");

如您所见,我已将 XML 文件方便地放在桌面上,并且在开发过程中运行良好。我现在想要做的是提供一个路径,这样无论我在哪里托管应用程序和 XML 文件,它都不会引发异常。我认为的一种方法可能是在将安装应用程序的目录中有一个文件夹,但为此我必须动态地找出当前目录的路径(我无法弄清楚)。

请帮忙。

4

3 回答 3

1

你可以使用这样的东西:

var path = string.Format("{0}\\{1}", Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "productplanningquery.xml");
var pathForCurrentApp = string.Format("{0}\\{1}", Environment.CurrentDirectory, "productplanningquery.xml");
于 2013-10-02T06:30:09.260 回答
1

我不确定您是否想使用 winform 应用程序读取 xml 并执行一些操作,然后将其传递给 Web 应用程序或其他东西。但这是我的理解:

案例 1:如果您需要在 IIS 之外创建 XML,并且该 XML 将被 ASP.Net 应用程序使用,那么:

要将桌面应用程序与 IIS 服务器一起使用,您需要对 Live Machine 具有完全的管理权限。如果不是,那么您应该考虑构建 Windows 服务来操作 XML 文件或任何将在幕后运行的任务,以减少 asp.net 应用程序的负载。

仍然在这种情况下,如果您没有服务器,那么您需要一些虚拟专用主机或类似类型的主机,您几乎拥有访问系统的所有特权。然后部署 Windows 服务,设置输出路径,使其也可以被 asp.net 应用程序访问。并为所欲为。

案例 2:如果您只想在 ASP.Net 中读取 XML,那么

在这种情况下,您可以使用 XDocument 轻松阅读它。但请注意,XML 应该在同一应用程序目录中或在 ASP.Net 应用程序的范围内

使用 ASP.Net 的 Web-Windows 服务的 MSDN 文章

于 2013-10-02T06:31:57.883 回答
1

您可以使用args这种方式传递 XML 的位置,您的代码如下所示:

var query = new XPathDocument(args[0])

您也可以使用相对路径。确保在部署代码时将文件的位置保持在相同的相对位置。例如,如果您将 XML 放在与应用程序相同的目录中

var query = new XPathDocument("productplanningquery.xml")
于 2013-10-02T06:42:37.663 回答