[英]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要解决此问题,请根据所需的任何应用程序池创建新的应用程序池。 然后设置此池运行的标识,如附带的屏幕截图所示。
确保此用户对文件共享具有正确的权限,然后重新进行测试
可能是你应该使用Path.DirectorySeparatorChar
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.