我有一个用经典 ASP 制作的网站,我正在尝试从 windows xp 开发机器迁移到 windows 8 开发机器,并在生产中从 Windows Server 2003 机器迁移到 Server 2012。我们使用 Crystal Reports Report Application Server 9 生成报告。
在 Windows 8 中,我安装了 IIS 8 并将 .NET 2 经典应用程序池配置为使用 32 位应用程序并将标识设置为网络服务。我安装了 CR9 RAS 和 64 位运行时。当我在网站上打印报告时,我在创建 CR 对象的第一行收到此错误:
An unhandled win32 exception occured in w3wp.exe
我运行了 DebugDiag 并能够获得如下崩溃转储:
In w3wp__.NET v2.0 Classic__PID__2220__Date__10_03_2013__Time_12_59_55PM__954__Second_Chance_Exception_C000041D.dmp the module C:\Windows\System32\user32.dll has caused an access violation exception (0xC0000005) when trying to write to memory location 0x03f77de0 on thread 35
Thread 29 - System ID 2736
Entry point cachemanager!DllUnregisterServer+accd
Create time 9/26/2013 12:30:24 PM
Time spent in user mode 0 Days 0:0:0.0
Time spent in kernel mode 0 Days 0:0:0.0
Full Call Stack
Function Arg 1 Arg 2 Arg 3 Arg 4 Source
cachemanager!DllUnregisterServer+78c5 029e8a63 000e00be 00000081 00000000
user32!UserCallWinProcCheckWow+100 029e8a63 029e8a63 00000000 000e00be
user32!DispatchClientMessage+15d 012a2170 00000000 00000081 00000000
user32!__fnINLPCREATESTRUCT+8d 03fdf6f4 00000000 03fdfc10 770e2bf0
ntdll!KiUserCallbackDispatcher+2e 00000000 0000c083 0000c083 00000000
user32!VerNtUserCreateWindowEx+238 00000000 00000000 80000000 00000000
user32!CreateWindowInternal+26b 0000c083 00000000 80000000 00000000
user32!CreateWindowExW+37 00000000 0000c083 00000000 80000000
cachemanager!DllUnregisterServer+7a3d 00000000 03fdfba8 00000000 80000000
cachemanager!DllUnregisterServer+75d9 00000000 05335d98 05335d98 00000000
cachemanager!DllUnregisterServer+6e94 05335688 00000000 00000000 05335d98
cachemanager!DllUnregisterServer+ad2c 05335d98 03fdfc70 770fbf39 05335d98
kernel32!BaseThreadInitThunk+e 05335d98 8eb1ec43 00000000 00000000
ntdll!__RtlUserThreadStart+72 029ebeab 05335d98 ffffffff 77171df7
ntdll!_RtlUserThreadStart+1b 029ebeab 05335d98 00000000 00000000
Exception Information
In w3wp__.NET v2.0 Classic__PID__356__Date__09_26_2013__Time_12_30_24PM__637__Second_Chance_Exception_C000041D.dmp the module C:\Windows\System32\user32.dll has caused an access violation exception (0xC0000005) when trying to write to memory location 0x04443000 on thread 29
Module Information
Image Name: C:\Windows\System32\user32.dll Symbol Type: PDB
Base address: 0x00905a4d Time Stamp: Thu Sep 20 00:10:05 2012
Checksum: 0x00000000 Comments:
COM DLL: False Company Name: Microsoft Corporation
ISAPIExtension: False File Description: Multi-User Windows USER API Client DLL
ISAPIFilter: False File Version: 6.2.9200.16420 (win8_gdr.120919-1813)
Managed DLL: False Internal Name: user32
VB DLL: False Legal Copyright: © Microsoft Corporation. All rights reserved.
Loaded Image Name: user32.dll Legal Trademarks:
Mapped Image Name: Original filename: user32
Module name: user32 Private Build:
Single Threaded: False Product Name: Microsoft® Windows® Operating System
Module Size: 1.09 MBytes Product Version: 6.2.9200.16420
Symbol File Name: c:\symcache\wuser32.pdb\81836B9A16A64DBBB5209E254A61DD072\wuser32.pdb Special Build: &
似乎网络服务可能无法访问某些东西,所以我去了安装 CR 的目录、整个 C 驱动器、Windows 临时文件夹和我的网站文件夹,并让它们完全控制来自网络服务,没有任何变化。
我尝试卸载水晶报告并点击该页面以查看不同的错误,但我仍然遇到相同的崩溃,所以我不确定这是实际安装问题还是更严重的问题,就我如何为 IIS 配置 IIS 或经典 ASP 而言8.
我现在正在尝试 sysinternals 进程监视器,我看到一些缓冲区溢出,但由于我不知道如何使用该程序,我不确定它是否与这个 dll 或什至来自 iis。
如何进一步调试或解决此问题?
更新:
IO 运行 sysinternals 进程监视器,我能够看到我的 asp 页面何时被击中,我得到了缓冲区溢出。发生这种情况后,当调用 Crystal Reports DLL 时,它会显示 FILE LOCKED WITH ONLY READERS
似乎有些东西在文件到达 CR 之前就锁定了文件。访问这些 asp 页面时可能导致缓冲区溢出的原因是什么?