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

本文关键字:文件 访问 WCF 服务 net | 更新日期: 2023-09-27 18:16:00

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

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

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

系统找不到指定的文件

我已经尝试创建一个新的用户和新的应用程序池,使用该身份来运行服务,并给予完全控制,试图读取文件夹,但问题继续。

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

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

假设您有一个相对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的实例,但是你可以很容易地调整它来返回一个字符串(完整的路径名)