2017-04-22 60 views
0

我们在~/Content/EmailTemplate/template.cshtml有一个邮件模板。但每当我们做到以下几点:在蔚蓝的web应用File.Exits返回false其实存在文件

var path="D:/site/wwwroot/Content/EmailTemplate/template.cshtml" 
File.Exist(path) 

File.Exist(path)回报false。在本地源代码中调试时,它工作正常。它仅在Azure Web应用程序中返回false。我检查了那里已存在的文件。

+0

请注意,如果您正在执行代码的进程没有权限访问此文件,则'File.Exists'将返回'false'。情况会是这样吗?在Azure中,也许您的代码正在受限访问的帐户下运行。 –

+0

嗨@DarinDimitrov有任何方法来检查权限,但我的帐户只有管理员模式 –

+0

Azure网络应用程序文件位于D:/ home/site/wwwroot,所以这可能是您的问题。但是像提到的那样,你不应该对路径进行硬编码。 – sjkp

回答

2

如果将上面的代码移到另一个环境中,它将会中断。

我建议您使用地图路径,因为这样可以确保您可以从托管环境迁移到托管环境,包括您的本地开发环境。

string path = Server.MapPath("~/path/tofile"); 

对于您正确定位文件,您也会有更高的信心。

0

对于Azure WebApp, D:\home是我们共享的,我们可以在此路径中读取或写入文件。有关主目录访问的更多详细信息,请参阅WebApp Sandbox。 Azure上的文件结构请参考另一个document。我们可以从Kudu(http://yourwebsite.scm.azurewebsites.net/)工具中浏览它。就你而言,我们也可以在Azure WebApp中使用以下代码。

string path = Environment.GetEnvironmentVariable("HOME") + @"\site\wwwroot\Content\EmailTemplate\template.cshtml"