I wrote a win32 DLL to do some custom data storage for a project. I then used DllImport to access the functions in this DLL from my asp.net pages.
This works perfectly on my test setup of Windows XP Pro SP2 using Visual Web Developer Express 2008's builtin development server. It also works correctly using IIS 5 with .net framework 3.5 installed.
However, when I move the code to a Windows 2003 Server Enterprise Server, which runs IIS 6 (also with .net framework 3.5), the dll function call throws an exception:
System.DllNotFoundException: Unable to load DLL 'DataAPI.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E) at DataAPIDLL.CloseNewStorage(Int32 iStorageID) at TestDLL.Page_Load(Object sender, EventArgs e) in e:\webroot\TestDLL.aspx.cs:line 27
DataAPI.dll is currently in the bin directory of my site. Here is a sample code-behind file of a page that I am using to do this test:
using System;
using System.Runtime.InteropServices;
public class DataAPIDLL {
[DllImport("DataAPI.dll")]
public static extern void CloseNewStorage(int iStorageID);
}
public partial class TestDLL : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
try {
DataAPIDLL.CloseNewStorage(-1);
} catch (Exception ex) {
lblResult.Text = ex.ToString();
}
}
}
It seems to make no difference if I specify an entrypoint or charset in the dllimport statement. It works on the development machine's dev-server and IIS but not on the win2k3 machine. There were also some short periods of time (minutes) where it did not work on the development server for no apparent reason. That problem seemed to fix itself.
Any suggestions. I've been screwing around with this for almost 2 full days and have gotten nowhere. The passive internet usually has answers to these obscure technical problems, but not this time. I have tried a few other things, but don't want to list them since they might dissuade suggestions. Thanks.
If you think I could learn something useful from it, I could install and try the visual webdev development server on the win2k3server system and see how that behaves.