1

我对 azure WCF 项目有疑问。我想获取我添加到项目<添加->现有项目>的xml文件的文件路径。在其属性中,我设置了“如果较新则复制”,当我将其部署在 azure 服务器上时,我看到该文件已正确复制到bin中。我尝试过使用:

1)这个只在模拟器上本地工作:

string filePath = Path.Combine(Environment.GetEnvironmentVariable("RoleRoot"), @"approot", @"bin", @"myFile.xml");

2)不在任何地方工作(在模拟器和天蓝色上):

string appRoot = HttpContext.Current.Server.MapPath(@"~\"); 
string filePath = Path.Combine(appRoot + @"\", @"bin\myFile.xml");

也许除了将xml文件添加到输出目录之外还有另一种方法?我正在使用 EmguCV 并想加载级联 xml 文件。

4

2 回答 2

2

Azure 没什么特别的!这只是IIS!因此,无论您在本地做什么和工作,都可以在 Azure 中工作(作为一般经验法则)。

你试过HttpContext.Current.Server.MapPath("~/bin/name_of_file.xml");吗?

我也想知道你为什么要设置它的Copy Local属性。将 XML 添加到解决方案的正确方法是使其成为Build ActiontoContentCopy to Outputto Do not copy。那么Server.MapPath("~/name_of_file.xml")应该没问题。

于 2013-06-18T20:30:38.387 回答
1

我刚刚经历了这个尝试,以获得一个在本地运行时工作的 Azure 函数,以便在部署到 Azure 时工作。我的函数引用了位于我的解决方案中的数据文件,但在部署到 Azure 时找不到它。虽然我能够在本地运行时仅使用文件名找到该文件,但我必须使用路径“D:\home\site\wwwroot\”才能将文件定位在 Azure 中。我没有对路径使用硬编码值,而是使用:

var binPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location))

它获取 Azure 函数二进制文件的路径,但我的数据文件位于父文件夹中,因此:

var parentOfBinPath = new DirectoryInfo(binPath).Parent.FullName; 

并结合文件名得到完整的文件路径:

var filePath = Path.Combine(parentOfBinPath, "my-file.dat");

它适用于本地运行的功能和部署到 Azure 的功能。

于 2019-08-27T17:55:56.073 回答