在azure项目中存档的路径

时间:2013-06-18 10:14:00

标签: azure filepath emgucv

我对azure WCF项目有疑问。我想获取xml文件的文件路径,我将其添加到项目< add - > 现有项目>。在其属性中,我设置了“复制如果更新”,当我在天蓝色服务器上部署它时,我看到此文件已正确复制到 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并想加载cascade xml文件。

2 个答案:

答案 0 :(得分:2)

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

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

我也想知道你为什么要设置它的Copy Local属性。将XML添加到解决方案的正确方法是将Build Action设置为Content,将Copy to Output设置为Do not copy。然后只需Server.MapPath("~/name_of_file.xml")即可。

答案 1 :(得分:0)

我刚刚经历了这个尝试,试图获得一个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的功能。