发布c#桌面应用程序后使用外部xml文件

时间:2013-10-02 06:12:29

标签: c# asp.net desktop-application

我开发了一个需要托管在服务器上的c#桌面应用程序,并将根据存储在XML文件中的查询来调度数据。在开发时,我使用以下代码来读取XML文件:

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

正如您所看到的,我已经将XML文件方便地放在我的桌面上,并且在开发时它运行良好。我现在要做的是,给出一条路径,以便我在哪里托管应用程序和XML文件,它不会抛出异常。我认为可能是在安装应用程序的目录中有一个文件夹,但为此我必须动态地找出当前目录的路径(我无法弄清楚)。

请帮忙。

3 个答案:

答案 0 :(得分:1)

您可以使用以下内容:

var path = string.Format("{0}\\{1}", Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "productplanningquery.xml");
var pathForCurrentApp = string.Format("{0}\\{1}", Environment.CurrentDirectory, "productplanningquery.xml");

答案 1 :(得分:1)

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

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

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

在这种情况下,如果您不拥有服务器,那么您需要一些虚拟专用主机或类似的主机,您几乎可以访问系统。然后部署Windows服务,以这样的方式设置输出路径,以便asp.net app也可以访问它。做任何你想做的事。

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

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

MSDN Article for Web-Windows Services with ASP.Net

答案 2 :(得分:1)

您可以使用args传递XML的位置,这样您的代码就会如此:

var query = new XPathDocument(args[0])

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

var query = new XPathDocument("productplanningquery.xml")