0

セットアップ: 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」フォルダーを作成しました。"D:\WebSites\MySite\bin\MyDLLBin" フォルダーは、Visual Studio からの発行によって作成されます。

おそらく何らかの権限の問題だと思いますが、サーバーにログオンし、パス「D:\WebSites\MySite\bin\MyDLLBin」内のすべてのフォルダーで「Everyone」を「フルアクセス」に設定しましたが、File.Exists はまだ存在します。失敗します。

公開の一部として Some.dll を bin フォルダーに展開し、dll を保持するためにサーバー上に特別なフォルダーを作成する必要がない方がよいでしょう。

誰かが修正やその他の試みを提案できますか?

更新 #1: 興味深いことに:

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

例外をスローせず、7132045 を返します。

4

1 に答える 1