【问题标题】:WCF service: failed to get a directory on server using absolute pathWCF 服务:无法使用绝对路径获取服务器上的目录
【发布时间】:2012-01-17 17:49:49
【问题描述】:

我编写了一个 WCF 服务,该服务具有使用绝对路径获取服务器上的目录的功能。

它在触发临时可访问服务的 VS2010 调试模式下运行良好。

然后我在这台服务器的 IIS 下部署了服务。但是,它告诉我它无法获取此目录。

VS2010 和 IIS 都在同一台服务器上。我想知道是否需要在此目录路径上添加或修改任何内容。我只是认为使用绝对路径应该可以...

这个简单的函数如下:

public void testDir() 
{
            string strPhotoRootPath = @"T:\Data\Image";

            if (!Directory.Exists(strPhotoRootPath))
            {
                ErrorMsg newError = new ErrorMsg();
                newError.errorCode = 1001;
                newError.errorDetails = "Cannot locate the photolog root directory";
                throw new WebFaultException<ErrorMsg>(newError, HttpStatusCode.Forbidden);
            }
            ... //rest codes
}

此 T:\ 驱动器在另一台服务器上,但可以从当前机器访问。

希望我能在这里得到一些建议!提前致谢!

【问题讨论】:

  • T 看起来像一个映射驱动器,我对此表示怀疑。除非经过特别配置,否则 IIS 可以访问它。

标签: c# wcf web-services rest absolute-path


【解决方案1】:

您必须设置文件夹的访问权限,以便运行您的应用程序池的帐户可以访问 t:\

【讨论】:

    【解决方案2】:

    使用 UNC 路径而不是映射的网络驱动器,因为映射的驱动器特定于您的用户帐户。此外,正如 KMan 指出的那样,确保应用程序池标识可以访问 UNC 路径目标。

    根据评论编辑:

    Here's 有关如何在 Win2003 上使用 IIS6 设置应用程序池标识的资源。一旦您在 IIS 中正确配置了域帐户,并且您的应用程序已启动并运行,那么您需要确保您使用的帐户具有共享权限以及该文件系统的权限。

    【讨论】:

    • 嗨,您能否告诉我如何“确保应用程序池身份可以访问 UNC 路径目标”?我在WinServer2003上使用IIS6...我设置了正确的UNC路径,但是IIS下的服务仍然无法找到目录...
    • 再次感谢..事实证明共享驱动器搞砸了..创建一个新的并且它可以工作..
    猜你喜欢
    • 2012-09-07
    • 1970-01-01
    • 2010-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多