asp.net web應用程式中怎么呼叫含有ini組態檔的非托管的dll?
我在winform程式里面是把dll拷貝到C:\dll\,然后建了環境變數,把ini組態檔拷貝到解決方案的根目錄,如下圖,可以正常發布、運行

然后我新建了一個asp.net web專案,同樣的方式把ini組態檔拷貝到解決方案根目錄

下面是參考dll

在vs里面本地測驗的時候提示的錯誤好像ini組態檔不起作用,發布以后提示無法加載 DLL“ynumip_offline.dll”: 找不到指定的模塊。 (例外來自 HRESULT:0x8007007E)。
發布以后的應用服務器上我也建了環境變數了
請問asp.net web應用程式中怎么呼叫含有ini組態檔的非托管的dll?在線等,謝謝
uj5u.com熱心網友回復:
ini檔案里面有一些dll的地址,埠等資訊uj5u.com熱心網友回復:
你的dll檔案是否在32,64位都能呼叫,我感覺是這個問題uj5u.com熱心網友回復:
找不到模塊 不是找不到ini同時你這個是aspnet,你得把東西放在bin里,理論上ini檔案也得在bin里
另外那些ini的配置建議給物理絕對路徑(俺們很難知道人家的dll的規則,到底相對撒目錄,所以絕對路徑保險)
同時真正的生產環境應該給那個目錄對應的讀寫執行權(IIS跑aspnet其實不在你的存放路徑,他真正的運行目錄是系統盤的啥aspnet temp目錄,所以這也是為啥要你把東西放在bin下的原因,因為他實際上是把bin里東西放到那個temp目錄里在跑)
uj5u.com熱心網友回復:
給你的dll添加讀取權限并且和你網站本身的dll放一起,如bin下
uj5u.com熱心網友回復:
(1)我本機跟服務器都是64位的,之前winform版64位沒問題,32也可以正常運行
(2)我現在把所有的dll跟ini檔案都拷貝到Bin下了,參考的時候加了Bin路徑,[DllImport(@"Bin\ynumip_offline.dll",....]
(3)發布了以后發布檔案夾所有用戶已經全部設定為完全控制了,還是報錯:無法加載 DLL“Bin\ynumip_offline.dll”: 找不到指定的模塊。 (例外來自 HRESULT:0x8007007E)。
uj5u.com熱心網友回復:
Bin\ynumip_offline.dll 這無需更改,依舊使用ynumip_offline.dll去查一下或者你可以直接把dll和ini放到系統盤的system32檔案夾,windows系統默認dll查找路徑為(當前運行目錄,system32)
當前運行目錄:asp.net的實際運行目錄為C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files
(根據你用的框架版本決定)
uj5u.com熱心網友回復:
區別就是:無法加載 DLL“ynumip_offline.dll”: 找不到指定的模塊。 (例外來自 HRESULT:0x8007007E)。
無法加載 DLL“Bin\ynumip_offline.dll”: 找不到指定的模塊。 (例外來自 HRESULT:0x8007007E)。
拷貝到system32風險有點大,我拷貝到C:\dll下了,設定了環境變數,應該一樣吧?
uj5u.com熱心網友回復:
(2)我現在把所有的dll跟ini檔案都拷貝到Bin下了,參考的時候加了Bin路徑,[DllImport(@"Bin\ynumip_offline.dll",....]==>
[DllImport("ynumip_offline.dll",....]
這個bin不是物理路徑,要去掉
uj5u.com熱心網友回復:
還有,你給了完全控制的權限,是給了哪個賬號?uj5u.com熱心網友回復:
ynumip_offline.dll 這個是用c寫的?https://bbs.csdn.net/topics/396908683 看下這個問題 估計和你的差不多 同樣也是加載不了dll 你iis應用程式設定成應用32位了嗎?
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/21152.html
標籤:ASP.NET
