0

设置: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。

4

1 回答 1

0

假设filePathInApp该字符串包含从应用程序运行的根目录(而不是文件系统的根目录) 到您的Server.MapPath(filePathInApp)文件的路径,那么无论应用程序在哪里运行,都会将您的目录路径更改为“根目录”。所以你可能想尝试Server.MapPath("some.dll")Server.MapPath("\MyDLLBin\some.dll")

于 2013-04-24T16:35:23.967 回答