在看了很多话题后,我决定问这个
我有一个从本地文件系统读取文件的 WCF 服务。当该服务在我的计算机上进行本地测试时,这样做没有问题。
但是当我在 IIS8 中发布服务时,我收到了这个错误
该系统找不到指定的文件
我尝试创建一个新用户和一个新的 ApplicationPool,它使用该身份来运行服务,并且还完全控制了试图读取的文件夹,但问题仍然存在。
我什至尝试使用管理员作为新应用程序池的身份,但也没有解决问题
我错过了什么?
假设您有一个相对 URL 并且运行该应用程序的帐户具有适当的权限,那么您可能没有获得文件的正确路径名。
您可以尝试这样的方法来查找文件的完整路径:
using System.IO;
public FileInfo GetFileInfo(string filename)
{
if(filename == null)
throw new ArgumentNullException("filename");
FileInfo info = new FileInfo(filename);
if(!Path.IsPathRooted(filename) && !info.Exists)
{
string[] paths = {
Environment.CurrentDirectory,
AppDomain.CurrentDomain.BaseDirectory,
HostingEnvironment.ApplicationPhysicalPath,
};
foreach(var path in paths)
{
if(path != null)
{
string file = null;
file = Path.Combine(path, filename);
if(File.Exists(file))
{
return new FileInfo(file);
}
}
}
}
throw new FileNotFoundException("Couldn not find the requested file", filename);
}
它返回System.IO.FileInfo的一个实例,但您可以轻松地调整它以返回一个字符串(完整路径名)。