0

在看了很多话题后,我决定问这个

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

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

该系统找不到指定的文件

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

我什至尝试使用管理员作为新应用程序池的身份,但也没有解决问题

我错过了什么?

4

1 回答 1

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

于 2013-05-30T14:49:45.327 回答