.NET WCF服务无法访问本地文件

时间:2013-05-30 14:29:07

标签: c# .net wcf iis-8

在查看了许多主题后,我决定问这个

我有一个从本地文件系统读取文件的WCF服务。在我的计算机上本地测试服务时,这样做是没有问题的。

但是当我在IIS8中发布服务时,我收到此错误

  

系统找不到指定的文件

我尝试创建一个新用户和新的ApplicationPool,它使用该标识来运行服务,并且还可以完全控制尝试读取的文件夹,但问题仍然存在。

我甚至尝试过使用Administrator作为新应用程序池的标识,但也没有解决问题

我缺少什么?

1 个答案:

答案 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的实例,但您可以轻松地调整它以返回字符串(完整路径名)。