文件.在已发布的网站中存在文件失败
本文关键字:文件 存在 失败 网站 | 更新日期: 2023-09-27 18:10:55
设置:MVC Web Api应用程序,Visual Studio 2012
文件夹布局:D: ' ' MySite ' bin ' MyDLLBin '网站Some.dll
我的应用程序需要在一个非托管的DLL上加载库作为MVC Web API应用程序的一部分。在执行LoadLibrary之前,我执行a:
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:' mydll"文件夹。"D:'WebSites'MySite'bin'MyDLLBin"文件夹是通过从Visual Studio中发布创建的。
我想可能是某种权限问题,但我已经登录到服务器,并将"每个人"设置为"完全访问"在路径"D:' sites 'MySite'bin'MyDLLBin"和文件中的每个文件夹上。Exists仍然失败
对我来说,最好将Some.dll部署为发布到bin文件夹的一部分,而不必在服务器上创建一个特殊的文件夹来保存dll。
有人能建议一个修复或一些其他的事情去尝试吗?
UPDATE # 1:有趣的是:
System.IO.FileInfo(@"D:'WebSites'MySite'bin'MyDLLBin'Some.dll").Length
不抛出异常,返回7132045。
假设filePathInApp
是包含从应用程序运行位置的根(而不是文件系统的根)到文件的路径的字符串,Server.MapPath(filePathInApp)
将更改您的目录路径,使其"扎根"到应用程序运行的任何地方。所以你可以试试Server.MapPath("some.dll")
或Server.MapPath("'MyDLLBin'some.dll")