无法确定文件是否在web服务器上,因为确定目录的各种方法不起作用



我正在使用c#开发asp.net, vs2015应用程序,开发环境是Win10Pro机器。我可以使用各种方法中的任何一种来获取工作目录,并查看特定文件是否存在于开发pc上,但不存在于Web服务器上。我已经尝试了下面列出的方法:在Application_Start

中获取当前应用程序物理路径都在Dev PC上工作,但在Web服务器上使用时,它不会返回工作目录。该服务器是使用IIS10的2016年数据服务器。问题是,我把网站放在一起工作很好,除了显示GrapeCity activerports报告AR15。包含web查看器的网页打开得很好,正在寻找一个报告文件(MyReport.rdlx)。全球。aspx文件指向根目录,但是当web查看器打开时,显示文件未找到。我完全不知道,技术支持也不确定。这是阻止代码定位和验证文件存在的IIS问题吗?任何指导都将不胜感激。这是非常令人沮丧和耗时的。AppDomain.CurrentDomain.BaseDirectory不工作,HttpRuntime.AppDomainAppPath也不像其他的一样好。请求返回空白

string filename = AppDomain.CurrentDomain.BaseDirectory.ToString() +"SPU01_Dates.rdlx";
if (File.Exists(filename))
{
Response.Write("YES");
}
else
{
Response.Write("NO");
Response.Write("</br");
Response.Write(filename);
}

所有这些都不返回任何结果。

谢谢。

试试这个代码

if (File.Exists(Server.MapPath(filename)))

检查服务器上是否存在文件

在我的测试中,它返回YES并且工作良好。你有没有把&;spu01_dates .rdlx&;文件在根文件夹?

在开发环境中,它返回YES,当我将它部署到IIS时,它返回NO。我发现在部署过程中,rdlx文件没有与项目一起部署,所以我在已部署的文件夹中重新创建了一个,它返回YES。

测试证明AppDomain.CurrentDomain.BaseDirectory是获取文件路径最准确的方法。当您在IIS中测试此代码时,它是否返回NO或空?返回空表示这段代码没有被执行。

最新更新