[英]Server.MapPath() returning a path that does not exist when used with DirectoryInfo
我在IIS6中有一個虛擬目錄設置。 這映射到共享的網絡驅動器。
我可以使用正確地映射路徑
string mappedPath = HttpContext.Current.Server.MapPath(path);
然后我要創建DirectoryInfo對象,因為我想在目錄中找到一些文件。
DirectoryInfo updateDirectory = new DirectoryInfo(mappedPath);
但是然后updateDirectory.Exists
是假的嗎? 我可以從mappedPath
獲取字符串,然后復制到Start-> Run中以獲取路徑,因此我知道它存在。 我正在使用集成的Windows身份驗證對Web服務進行身份驗證,並具有對必要文件夾的權限。
代碼中我明顯缺少什么嗎? 還是這純粹是IIS等的設置和配置?
您需要檢查您的服務工作流程帳戶是否對該文件夾具有訪問權限。 AFAIK Windows身份驗證不會給工作過程帶來模仿,因此Windows身份驗證可能會有所不同。 或者(僅為了證明帳戶問題),您可以使用您的帳戶運行應用程序池,以查看問題是否會消失。
根據此鏈接:
http://bytes.com/topic/asp-net/answers/471616-server-mappath-virtual-directories
當對虛擬目錄使用Server.MapPath
,不會提供預期的輸出。
如果這是服務器權限,並且您正在使用Windows身份驗證,請確保在配置中包含此權限:
<identity impersonate="true" />
如果出現錯誤情況,DirectoryInfo返回false:如果文件夾不存在; 您沒有權限; 或它是斷開連接的網絡文件夾。
聽起來像是您的ASP.NET輔助進程的權限對我來說-模擬將解決此問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.