Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
发布c#桌面应用程序后使用外部xml文件_C#_Asp.net_Desktop Application - Fatal编程技术网

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

发布c#桌面应用程序后使用外部xml文件,c#,asp.net,desktop-application,C#,Asp.net,Desktop Application,我开发了一个c#桌面应用程序,它需要托管在服务器上,并将根据存储在XML文件中的查询获取数据。在开发过程中,我使用以下代码读取XML文件: var query=new XPathDocument(@“C:\\Documents and Settings\\XYZ\\Desktop\\productplanningquery.xml”) 如您所见,我已将XML文件方便地放在桌面上,并且在开发过程中工作良好。我现在想做的是给出一个路径,这样无论我在哪里托管应用程序和XML文件,它都不会抛出异常。我想

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

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

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


请帮助。

您可以使用以下内容:

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

您可以使用以下内容:

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

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

案例1:如果需要在IIS外部创建XML,并且该XML将被ASP.Net应用程序使用,则: 要将桌面应用程序与IIS服务器一起使用,您需要具有对实时计算机的完全管理访问权限。如果不是,那么你应该考虑建立Windows服务来操作XML文件或任何在后台运行的任务,以减少ASP.NET应用程序的负载。p> 在这种情况下,如果你没有自己的服务器,那么你需要一些虚拟的私有主机或类似的主机,你几乎有所有的权限来访问系统。然后部署Windows服务,以这样的方式设置输出路径,以便asp.net应用程序也可以访问它。做你想做的事

案例2:如果您想单独在ASP.Net中读取XML,那么 在本例中,您可以使用XDocument轻松地阅读XML。但是请注意,XML应该位于同一应用程序目录中,或者在ASP.Net应用程序的范围内


我不确定您想要实现什么,是否要使用winform app读取xml并执行一些操作,然后将其传递给web app或其他东西。但我的理解是:

案例1:如果需要在IIS外部创建XML,并且该XML将被ASP.Net应用程序使用,则: 要将桌面应用程序与IIS服务器一起使用,您需要具有对实时计算机的完全管理访问权限。如果不是,那么你应该考虑建立Windows服务来操作XML文件或任何在后台运行的任务,以减少ASP.NET应用程序的负载。p> 在这种情况下,如果你没有自己的服务器,那么你需要一些虚拟的私有主机或类似的主机,你几乎有所有的权限来访问系统。然后部署Windows服务,以这样的方式设置输出路径,以便asp.net应用程序也可以访问它。做你想做的事

案例2:如果您想单独在ASP.Net中读取XML,那么 在本例中,您可以使用XDocument轻松地阅读XML。但是请注意,XML应该位于同一应用程序目录中,或者在ASP.Net应用程序的范围内


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

var query=新的XPathDocument(args[0])

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

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

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

var query=新的XPathDocument(args[0])

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

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

但是,我尝试了您的相对位置,在调试它并查看XML的
bin/debug/
时,发布应用程序后,它的相对路径是什么?它将与您的
.exe
目录相同。如果您查看
bin/debug/
内部,您将看到在那里创建的应用程序的
exe
,因此路径是相对于它的。只要将您的
xml
exe
放在同一个目录中,您就可以了。我尝试了您的相对位置,但是,在调试过程中,我查看了xml的
bin/debug/
,一旦发布应用程序,它的相对路径是什么?它将与您的
.exe
目录相同。如果您查看
bin/debug/
内部,您将看到在那里创建的应用程序的
exe
,因此路径是相对于它的。只要把你的
xml
exe
放在同一个目录中,你就没事了。这是一个基于c#构建的桌面应用程序。此外,我也负担不起嵌入它,因为它很可能在未来发生变化。其中一个XML也包含配置。它是基于c#构建的基于桌面的应用程序。此外,我也负担不起嵌入它,因为它很可能在未来发生变化。其中一个XML也包含配置。