2012-01-17 137 views
2

我编写了一个WCF服务,其中包含一个使用绝对路径在服务器上获取目录的函数。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:\驱动器是在另一台服务器,但与目前的机器访问。

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

+1

T看起来像映射驱动器,我怀疑。除非特别配置IIS,否则IIS可以访问它。 – rerun

回答

1

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

编辑基于评论:

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

+0

我明白了..现在我需要写一个正确的UNC路径..谢谢! – Simon

+0

您好,请问您如何“确保应用程序池标识可以访问UNC路径目标”?我在WinServer2003上使用IIS6 ...我建立了一个正确的UNC路径,但仍然在IIS下的服务无法找到目录... – Simon

+0

再次感谢..事实证明,共享驱动器搞砸了..创建一个新的一个和它的工作.. – Simon

2

,这样运行你的应用程序池的帐户可以访问T优必须设置该文件夹的访问权限:\

相关问题