看着很多話題,我決定問這個.NET WCF服務無法訪問本地文件
我有一個WCF服務,讀取本地文件系統中的文件後。當服務在我的電腦上進行本地測試時,這樣做不成問題。
但是,當我在IIS8發佈服務我收到此錯誤
該系統找不到指定的文件
我試圖創建一個使用該標識的新用戶和新ApplicationPool運行該服務,並且完全控制正在嘗試讀取的文件夾,但問題仍然存在。
我也曾嘗試甚至使用管理員作爲新的應用程序池的身份,但並沒有解決問題,或者
我失去了什麼?
看着很多話題,我決定問這個.NET WCF服務無法訪問本地文件
我有一個WCF服務,讀取本地文件系統中的文件後。當服務在我的電腦上進行本地測試時,這樣做不成問題。
但是,當我在IIS8發佈服務我收到此錯誤
該系統找不到指定的文件
我試圖創建一個使用該標識的新用戶和新ApplicationPool運行該服務,並且完全控制正在嘗試讀取的文件夾,但問題仍然存在。
我也曾嘗試甚至使用管理員作爲新的應用程序池的身份,但並沒有解決問題,或者
我失去了什麼?
假設您有一個相對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實例,但你可以很容易地適應它返回一個字符串(全路徑名)。
我沒有使用相對名稱我正在使用完整路徑 –
從錯誤它看起來像文件路徑可能不正確。嘗試檢查服務是否配置了正確的路徑。 – Igarioshka
您是否嘗試將ApplicationPoolIdentity設置爲ApplicationPoolIdentity並在此處發佈結果。 – Saravanan
由於託管網站對系統資源的訪問權限有限,因此使用相同虛擬目錄的這些文件會更好。 – Saravanan