我在我的asp.net C#代码中使用DLLImport[absolute path of the C++ dll]
来调用C ++ dll中的方法。这很有效。
然后我在IIS上发布了该网站,并说它无法加载dll。
您能否建议如何解决此问题?
答案 0 :(得分:2)
我使用Native LoadLibrary从特定位置加载DLL。以下网址谈到了如何做到这一点。
我假设你有正确的权限集可以使用非托管代码,你可以使用以下内容:
private static bool CanCallUnmanagedCode
{
get
{
try
{
new SecurityPermission(SecurityPermissionFlag.Unmanage dCode).Demand();
}
catch(SecurityException)
{
return false;
}
return true;
}
}
void Page_Load(Object sender, EventArgs e)
{
if (CanCallUnmanagedCode)
Label1.Text = "This page can call unmanaged code.";
else
Label1.Text = "This page can NOT call unmanaged code.";
}
Label1为:
<asp:Label id="Label1" Text="Label Control" runat="server"/>
接下来要检查你的asp.net环境的位数以确保它与你匹配.dll ...因为x86 DLL无法通过x64环境加载。
答案 1 :(得分:1)
猜测会非常困难。最可能的原因是:
首先,我会看一下 Windows事件日志 - &gt;安全与应用。
如果我可以在该服务器上运行某些工具,我将运行sysinternal的ProcMon.exe
以查看它在尝试解析DLL路径时要查看的路径。