我开发了一个需要托管在服务器上的c#桌面应用程序,并将根据存储在XML文件中的查询来调度数据。在开发时,我使用以下代码来读取XML文件:
var query = new XPathDocument(@"C:\\Documents and Settings\\XYZ\\Desktop\\productplanningquery.xml");
正如您所看到的,我已经将XML文件方便地放在我的桌面上,并且在开发时它运行良好。我现在要做的是,给出一条路径,以便我在哪里托管应用程序和XML文件,它不会抛出异常。我认为可能是在安装应用程序的目录中有一个文件夹,但为此我必须动态地找出当前目录的路径(我无法弄清楚)。
请帮忙。
答案 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应用程序或其他一些内容。但这是我的理解:
要将桌面应用程序与IIS服务器一起使用,您需要具有对Live Machine的完全管理访问权限。如果不是那么你应该考虑构建Windows服务来操作XML文件或任何将在幕后运行的任务,以减少asp.net应用程序的负载。
在这种情况下,如果您不拥有服务器,那么您需要一些虚拟专用主机或类似的主机,您几乎可以访问系统。然后部署Windows服务,以这样的方式设置输出路径,以便asp.net app也可以访问它。做任何你想做的事。
在这种情况下,您可以使用XDocument轻松阅读它。但请注意,XML应位于同一应用程序目录中或ASP.Net应用程序的范围内
答案 2 :(得分:1)
您可以使用args
传递XML的位置,这样您的代码就会如此:
var query = new XPathDocument(args[0])
您还可以使用相对路径。确保在部署代码时,将文件的位置保留在相同的相对位置。例如,如果将XML放在与应用程序相同的目录中
var query = new XPathDocument("productplanningquery.xml")