c# - iisexpress.exe:仅在 Web 应用程序中调用本机代码 DLL 时访问冲突读取位置
问题描述
我正在从 asp.net 应用程序调用本机代码 dll(delphi)过程(无参数),并从 iisexpress.exe 获取该 [name].dll 的“访问冲突读取位置”异常。代码在 Windows 窗体应用程序中运行良好。
我已经检查了可能的 Windows Bitness 问题。dll是在win64下构建的。Asp Web 应用程序和 iis express 设置也从应用程序属性设置为 x64。排除了参数类型不兼容,因为该过程是无参数的并且它也没有返回任何内容。我还给了 'Everyone' 对 dll 的所有权限。调用相同 dll 的相同代码适用于 .net Windows 窗体应用程序。它也不适用于 Windows 服务器 IIS。
delphi dll本机代码:
procedure test() stdcall;
begin
end;
exports
test;
Asp.net c#代码调用DLL:
[DllImport("name.dll", CharSet = CharSet.Unicode,
CallingConvention = CallingConvention.StdCall)]
public static extern void test();
protected void Page_Load(object sender, EventArgs e)
{
test();
}
Winforms.net c# 工作代码调用相同的 DLL:
[DllImport("name.dll", CharSet = CharSet.Unicode,
CallingConvention = CallingConvention.StdCall)]
public static extern void test();
private void button3_Click(object sender, EventArgs e)
{
test();
}
我为 asp.net 应用程序遇到的 异常:在 iisexpress.exe 中的 0x000000000040D289(name.dll)处引发异常:0xC0000005:访问冲突读取位置 0x000002756568CCB0。
看起来它与 IIS 有关,因为它完美地在 Winforms 应用程序上运行,但我不确定是什么。
解决方案
推荐阅读
- python - 从整数列表中随机选择与其大小成正比的数字
- vlcj - VLCJ - RTP 流无法取消暂停 mp3,但可以取消暂停 mp4
- shell - 图片错误已存在且未将我的计数结果打印到文件中
- apollo-client - Apollo In-memory Cache 中的 ROOT_QUERY 和 $ROOT_QUERY 有什么区别?
- c# - 迁移到 .net core 3.1 后 EF OrderBy 出现问题
- php - 将 MySQL 行转换为单个数组
- aws-appsync - 将管道解析器与嵌套解析器相结合 - AppSync AWS
- vba - 如何使用 VBA 将包含内容控件的自动文本插入到 MS Word 文档中?
- laravel - Illuminate\View\Factory 类的对象无法转换为字符串
- java - Spring Data JPA @Table 注释工作