设置:MVC Web Api 应用程序、Visual Studio 2012
文件夹布局:D:\WebSites\MySite\bin\MyDLLBin\Some.dll
我的应用程序需要将非托管 DLL 上的 LoadLibrary 作为 MVC Web API 应用程序的一部分。在做 LoadLibrary 之前,我做了一个:
File.Exists(@"D:\WebSites\MySite\bin\MyDLLBin\Some.dll")
这将返回 false,这意味着我不应该执行 LoadLibrary。
我尝试在此处复制 DLL:C:\MyDLLs\Some.Dll
和
File.Exists(@"C:\MyDLLs\Some.DLL")
返回真。所以我从那里做了一个 LoadLibrary,一切都很好。
我通过登录服务器并创建它来创建“C:\MyDLLs”文件夹。“D:\WebSites\MySite\bin\MyDLLBin”文件夹是通过 Visual Studio 发布创建的。
我想可能是某种权限问题,但我已经登录服务器并在路径“D:\WebSites\MySite\bin\MyDLLBin”和 File.Exists 中的每个文件夹上将“所有人”设置为“完全访问”失败。
对我来说,将 Some.dll 作为发布的一部分部署到 bin 文件夹会更好,而不必在服务器上创建一个特殊的文件夹来保存 dll。
有人可以建议修复或其他一些尝试吗?
更新#1:有趣的是:
System.IO.FileInfo(@"D:\WebSites\MySite\bin\MyDLLBin\Some.dll").Length
不抛出异常并返回 7132045。