繁体   English   中英

File.Exists()始终在IIS上返回false

[英]File.Exists() always returns false on IIS

我用File.Exists()检查的文件路径驻留在映射的驱动器上( Z:\\hello.txt )。 代码在调试环境中运行良好,但在IIS中,它总是返回false

var fullFileName = string.Format("{0}\\{1}", ConfigurationManager.AppSettings["FileName"], fileName);

if (System.IO.File.Exists(fullFileName))

为什么会如此,我该如何解决这个问题呢?

我已授予每个人在该映射驱动器中的完全读/写权限

编辑:

我尝试通过\\\\192.168.1.12\\Examples\\Files\\2.xml删除文件,我得到相同的结果。 它不会检测IIS上的文件,但在调试时可以正常工作

我认为您的应用程序没有“Z:”的权限是“Z:”网络磁盘?

我在使用网络映射驱动器时遇到了类似的问题,当运行调试代码应用程序运行完美时,运行发行版应用程序时无法找到该文件。

如果文件存储在与部署应用程序相同的服务器上,我们通过存储映射驱动器的本地驱动器目录位置找到了解决方案,例如Z:\\files\\可以是E:\\folder\\folder1\\

如果应用程序部署在单独的服务器上,我们发现使用完整的网络名称工作,例如\\\\server1\\folder\\

我希望这证明对你有帮助。

您的Web应用程序在某个安全上下文中运行,您需要找出它的上下文。 如果是普通用户,请以用户(使用runas工具)打开命令提示符,使用命令提示符映射所需的驱动器(确保使用/persistent:yes标志)

或者为什么你不能只使用UNC路径( \\\\serverName\\shareName )并避免所有这些废话?

编辑:2013-05-27要解决此问题,请根据所需的任何应用程序池创建新的应用程序池。 然后设置此池运行的标识,如附带的屏幕截图所示。

屏幕截图显示了IIS信用卡的设置

确保此用户对文件共享具有正确的权限,然后重新进行测试

可能是你应该使用Path.DirectorySeparatorChar

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM