2012-01-17 111 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優必須設置該文件夾的訪問權限:\

相關問題