簡體   English   中英

File.Exists在已發布網站上的文件失敗

[英]File.Exists fails on file in published website

設置:MVC Web Api應用程序,Visual Studio 2012

文件夾布局:D:\\ WebSites \\ MySite \\ bin \\ MyDLLBin \\ Some.dll

作為MVC Web API應用程序的一部分,我的應用程序需要在非托管DLL上加載LoadLibrary。 在執行LoadLibrary之前,我需要執行以下操作:

File.Exists(@"D:\WebSites\MySite\bin\MyDLLBin\Some.dll")

這返回false,這意味着我不應該執行LoadLibrary。

我嘗試在此處復制DLL:C:\\ MyDLLs \\ Some.Dll

File.Exists(@"C:\MyDLLs\Some.DLL")

返回TRUE。 因此,我從那里開始執行LoadLibrary,一切都很好。

通過登錄到服務器並創建它,創建了“ C:\\ MyDLLs”文件夾。 通過從Visual Studio發布創建“ D:\\ WebSites \\ MySite \\ bin \\ MyDLLBin”文件夾。

我認為可能是某種權限問題,但是我已經登錄到服務器並將路徑“ D:\\ WebSites \\ MySite \\ bin \\ MyDLLBin”和File.Exists中的每個文件夾上的“每個人”設置為“完全訪問”失敗。

對於我來說,最好將Some.dll部署為發布到bin文件夾的一部分,而不必在服務器上創建一個特殊的文件夾來保存dll。

有人可以建議修復程序或其他嘗試的方法嗎?

更新#1:有趣的是:

System.IO.FileInfo(@"D:\WebSites\MySite\bin\MyDLLBin\Some.dll").Length

不會引發異常並返回7132045。

假設filePathInApp是從應用程序運行所在的根目錄(而不是文件系統的根目錄)保存文件路徑的字符串,則Server.MapPath(filePathInApp)會將目錄路徑更改為“ rooted”該應用程序正在運行。 因此,您可能想嘗試Server.MapPath("some.dll")Server.MapPath("\\MyDLLBin\\some.dll")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM