IIS8 上的 IIRF / Window Server 2012 抛出 w3wp.exe 异常

IIRF on IIS8 / Window Server 2012 Throwing w3wp.exe Exceptions

有没有人有幸让 IIRF 与 IIS8 一起工作?

我正在将现有的 PHP Web 应用程序从 IIS 7.5 / Windows Server 2008 R2 服务器迁移到新的 IIS8 / 2012 服务器。我下载并测试了所有 IIRF 2.x 版本都无济于事。我有 运行 调试诊断程序,但没有获得有关失败的 w3wp.exe 进程的详细信息。 IIRF 日志显示以下异常。

我没有多少 URL 重写经验,想知道我是否应该使用 Internet Server API 的 URL 重写。

错误日志摘录

Wed Apr 15 16:11:59 - 3348 - GetServerVariable: getting 'SERVER_PORT'

Wed Apr 15 16:11:59 - 3348 - GetServerVariable: 4 bytes

Wed Apr 15 16:11:59 - 3348 - GetServerVariable: result '443'

Wed Apr 15 16:11:59 - 3348 - GetServerVariable: getting 'HTTPS'

Wed Apr 15 16:11:59 - 3348 - GetServerVariable: 3 bytes

Wed Apr 15 16:11:59 - 3348 - GetServerVariable: result 'on'

Wed Apr 15 16:11:59 - 3348 - EXCEPTION

Wed Apr 15 16:11:59 - 3348 - SymInit: Symbol-SearchPath: 'C:\inetpub\ISAPI\Ionic Rewrite.1.2.0-Release-x64\;.;c:\windows\system32\inetsrv;c:\windows\system32\inetsrv;C:\Windows;C:\Windows\system32;SRVC:\websymbolshttp://msdl.microsoft.com/download/symbols;', symOptions: 530, UserName: 'MyUserNameHere'

Wed Apr 15 16:11:59 - 3348 - OS-Version: 6.3.9600 () 0x110-0x3

Wed Apr 15 16:11:59 - 3348 - Stack trace:

00007FFA846DC579 module(filter): (filename not available): RegisterModule

00007FFA8461C579 module(IIRF): (filename not available): Iirf_GetVersion

00007FFA8461C896 module(IIRF): (filename not available): HttpFilterProc

00007FFA846D1B97 module(filter): (filename not available): (function-name not available)

00007FFA846D1EA9 module(filter): (filename not available): (function-name not available)

00007FFA846D1600 module(filter): (filename not available): (function-name not available)

00007FFA86B330A5 module(iiscore): (filename not available): (function-name not available)

00007FFA86B32908 module(iiscore): (filename not available): (function-name not available)

00007FFA86B319A6 module(iiscore): (filename not available): (function-name not available)

00007FFA86B3641C module(iiscore): (filename not available): (function-name not available)

00007FFA86B37FD3 module(iiscore): (filename not available): (function-name not available)

00007FFA86B111A9 module(w3dt): (filename not available): UlAtqSetContextProperty

00007FFA884F20C3 module(W3TP): (filename not available): THREAD_POOL::BindIoCompletionCallback

00007FFA884F1FF3 module(W3TP): (filename not available): THREAD_POOL::BindIoCompletionCallback

00007FFA884F1F7E module(W3TP): (filename not available): THREAD_POOL::BindIoCompletionCallback

00007FFA936516AD module(KERNEL32): (filename not available): BaseThreadInitThunk

00007FFA938CE954 module(ntdll): (filename not available): RtlUserThreadStart

00007FFA938CE954 module(ntdll): (filename not available): RtlUserThreadStart

我有完全相同的问题,只是从服务器 2008 (IIS 7.5) 移动到 2012 (IIS 8.5),我常用的 IIRF 版本 2.1.2.0-x64 不起作用,但仅在重定向时,重写似乎上班。有些人建议回到 v2.0,但我已经做到了,它根本不起作用,可能是因为它不是 x64 版本。我还尝试了最新的 2.1.2.3-x64 和相同的问题,没有重定向。我遇到了一些已在此处修复它的人 (https://iirf.codeplex.com/workitem/34722),但不幸的是还没有发布新的 DLL。任何人都可以尝试涉及重新编译然后发布 DLL 的修复程序吗?很多人都会从中受益。谢谢

-- 编辑 -- (更新)

我刚刚设法让 IIRF 在 IIS8+ 中工作,但只有 IIRF-2.0.1.15 32 位可以工作,它涉及到通常的安装,然后你必须进入站点应用程序池的高级设置使用IIRF 和 Enable 32-Bit Applications = True,这当然是因为 IIRF-2.0.1.15 是 32 位的。不是最好的,但它有效。我试图找到一个固定的 2.1 x64 DLL,当我找到时,我会提供它。谢谢

最后,我获得了适用于 IIS8+ 的新版本修订版,我已将其发布在我的网站 (http://www.nelsonpires.com/web-development/ionics-isapi-rewrite-filter-aka-iirf-for-iis8/) 上,供任何人下载和使用。我已经对其进行了测试并确认它在 IIS8.5 上运行良好。希望这对你也有用。