在查看了许多主题后,我决定问这个
我有一个从本地文件系统读取文件的WCF服务。在我的计算机上本地测试服务时,这样做是没有问题的。
但是当我在IIS8中发布服务时,我收到此错误
系统找不到指定的文件
我尝试创建一个新用户和新的ApplicationPool,它使用该标识来运行服务,并且还可以完全控制尝试读取的文件夹,但问题仍然存在。
我甚至尝试过使用Administrator作为新应用程序池的标识,但也没有解决问题
我缺少什么?
答案 0 :(得分:0)
假设您有一个相对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的实例,但您可以轻松地调整它以返回字符串(完整路径名)。