文件.在已发布的网站中存在文件失败

本文关键字:文件 存在 失败 网站 | 更新日期: 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")