IIRF does not work as a ISAPI extension on IIS 6

Topics: Developer Forum, Project Management Forum, User Forum
Apr 27, 2010 at 7:22 AM

Having followed the steps in the documentation to configure IIRF an a ISAPI extension, I can not get the test page to come up. (http://XXXX.eu/a.iirf)

The filter is working properly but I need the extension because of several AJAX requests (using POST with ProxyPass)

Coordinator
Apr 27, 2010 at 8:31 AM

the setup procedure is described in the documentation.

 

Apr 27, 2010 at 9:06 AM

Thank you. I have followed the procedure carefully, still I can't see the page.

The version of IIRF I use is 2.1.1.9 , although I had the same issue with the previous version too.

My IIRF.ini looks like this :

RewriteLog C:\iirflogs\iirf

RewriteLogLevel 5 

StatusInquiry ON

RewriteCond %{HTTP_HOST} ^(www\.)?XXXX\.eu$ [I]     

ProxyPass ^/(.*?)$ http://localhost:8080/$1 [I]

and I included the log file in case it matters here (soory it's long)

 

Tue Apr 27 09:40:03 -  3216 - -------------------------------------------------------Tue Apr 27 09:40:03 -  3216 - Ionic ISAPI Rewriting Filter (IIRF) 2.1.1.9 RELEASETue Apr 27 09:40:03 -  3216 - IIRF was built on: Apr 19 2010 22:17:30Tue Apr 27 09:40:03 -  3216 - Cached: DLL_PROCESS_ATTACHTue Apr 27 09:40:03 -  3216 - Cached: Process ID: 29532Tue Apr 27 09:40:03 -  3216 - Cached: ReadServerConfig: C:\Program Files\Ionic Shade\IIRF 2.1\IirfGlobal.ini(23): Filter Priority is now: HIGH (0x80000)Tue Apr 27 09:40:03 -  3216 - Cached: ReadServerConfig: C:\Program Files\Ionic Shade\IIRF 2.1\IirfGlobal.ini(46): NotifyLog setting is now: OFFTue Apr 27 09:40:03 -  3216 - Cached: ReadServerConfig: C:\Program Files\Ionic Shade\IIRF 2.1\IirfGlobal.ini(63): RewriteEngine setting is now: ONTue Apr 27 09:40:03 -  3216 - Cached: DLL_PROCESS_ATTACH - completeTue Apr 27 09:40:03 -  3216 - Cached: GetFilterVersionTue Apr 27 09:40:03 -  3216 - GetLogFile: app:'/LM/W3SVC/16544/Root'  new log:'C:\iirflogs\iirf.29532.log'Tue Apr 27 09:40:03 -  3216 - ReadVdirConfig: actual log file 'C:\iirflogs\iirf.29532.log'Tue Apr 27 09:40:03 -  3216 - ReadVdirConfig: ini file: 'C:\Inetpub\vhosts\XXXX.eu\httpdocs\Iirf.ini'Tue Apr 27 09:40:03 -  3216 - ReadVdirConfig: ini file timestamp: 2010/04/27 08:20:57 GMT Daylight TimeTue Apr 27 09:40:03 -  3216 - ReadVdirConfig: cfg(0x02013F08)Tue Apr 27 09:40:03 -  3216 - ReadVdirConfig: LogLevel = 5Tue Apr 27 09:40:03 -  3216 - ReadVdirConfig: pass 2Tue Apr 27 09:40:03 -  3216 - ReadVdirConfig: C:\Inetpub\vhosts\XXXX.eu\httpdocs\Iirf.ini(3): StatusInquiry ON (--) (--)Tue Apr 27 09:40:03 -  3216 - ReadVdirConfig: C:\Inetpub\vhosts\XXXX.eu\httpdocs\Iirf.ini(3): IIRF Status Inquiry is enabled at path '/iirfStatus' for local requests only.Tue Apr 27 09:40:03 -  3216 - ReadVdirConfig: C:\Inetpub\vhosts\XXXX.eu\httpdocs\Iirf.ini(6): RewriteCond   %{HTTP_HOST}  ^(www\.)?XXXX\.eu$ '[I]'Tue Apr 27 09:40:03 -  3216 - ParseCondModifierFlags: '[I]'Tue Apr 27 09:40:03 -  3216 - ParseCondModifierFlags: token 'I'Tue Apr 27 09:40:03 -  3216 - Cond: Case Insensitive matchTue Apr 27 09:40:03 -  3216 - ReadVdirConfig: C:\Inetpub\vhosts\XXXX.eu\httpdocs\Iirf.ini(8): ProxyPass (rule 1)  '^/(.*?)$'  'http://localhost:8080/$1'      [I]Tue Apr 27 09:40:03 -  3216 - ParseRuleModifierFlags: '[I]'Tue Apr 27 09:40:03 -  3216 - ParseRuleModifierFlags: token 'I'Tue Apr 27 09:40:03 -  3216 - rule: Case Insensitive matchTue Apr 27 09:40:03 -  3216 - ReadVdirConfig: not a duplicate rule...Tue Apr 27 09:40:03 -  3216 - ReadVdirConfig: Done reading INI for vdir(/), found 1 rules (0 errors, 0 warnings) on 9 linesTue Apr 27 09:40:03 -  3216 - GetVdirConfig: Obtain  vdir '/LM/W3SVC/16544/Root' (era=0) (rc=1) (Expired=0) (ptr=0x02013F08)...Tue Apr 27 09:40:03 -  3216 - HttpFilterProc: SF_NOTIFY_URL_MAPTue Apr 27 09:40:03 -  3216 - HttpFilterProc: cfg= 0x02013F08Tue Apr 27 09:40:03 -  3216 - HttpFilterProc: SF_NOTIFY_AUTH_COMPLETETue Apr 27 09:40:03 -  3216 - DoRewritesTue Apr 27 09:40:03 -  3216 - GetServerVariable_AutoFree: getting 'url'Tue Apr 27 09:40:03 -  3216 - GetServerVariable_AutoFree: 128 bytesTue Apr 27 09:40:03 -  3216 - GetServerVariable_AutoFree: result ''Tue Apr 27 09:40:03 -  3216 - GetHeader_AutoFree: getting 'url'Tue Apr 27 09:40:03 -  3216 - GetHeader_AutoFree: 17 bytes   ptr:0x000CE0C0Tue Apr 27 09:40:03 -  3216 - GetHeader_AutoFree: 'url' = '/iirfstatus.iirf'Tue Apr 27 09:40:03 -  3216 - GetServerVariable_AutoFree: getting 'QUERY_STRING'Tue Apr 27 09:40:03 -  3216 - GetServerVariable_AutoFree: 1 bytesTue Apr 27 09:40:03 -  3216 - GetServerVariable_AutoFree: result ''Tue Apr 27 09:40:03 -  3216 - GetHeader_AutoFree: getting 'method'Tue Apr 27 09:40:03 -  3216 - GetHeader_AutoFree: 4 bytes   ptr:0x000CE1D0Tue Apr 27 09:40:03 -  3216 - GetHeader_AutoFree: 'method' = 'GET'Tue Apr 27 09:40:03 -  3216 - DoRewrites: New Url, before decoding: '/iirfstatus.iirf' Tue Apr 27 09:40:03 -  3216 - DoRewrites: Url (no decoding): '/iirfstatus.iirf'Tue Apr 27 09:40:03 -  3216 - EvaluateRules: depth=0Tue Apr 27 09:40:03 -  3216 - EvaluateRules: Rule 1 : 2 matchesTue Apr 27 09:40:03 -  3216 - GetServerVariable: getting 'HTTP_HOST'Tue Apr 27 09:40:03 -  3216 - GetServerVariable: 16 bytesTue Apr 27 09:40:03 -  3216 - GetServerVariable: result 'www.XXXX.eu'Tue Apr 27 09:40:03 -  3216 - ReplaceServerVariables: VariableName='HTTP_HOST' Value='www.XXXX.eu'Tue Apr 27 09:40:03 -  3216 - ReplaceServerVariables: in='%{HTTP_HOST}' out='www.XXXX.eu'Tue Apr 27 09:40:03 -  3216 - EvalCondition: ts1 'www.XXXX.eu'Tue Apr 27 09:40:03 -  3216 - GenerateReplacementString: result 'www.XXXX.eu'Tue Apr 27 09:40:03 -  3216 - EvalCondition: t(www.XXXX.eu) op(|) p(^(www\.)?XXXX\.eu$)Tue Apr 27 09:40:03 -  3216 - EvalCondition: match result: 2 (match)Tue Apr 27 09:40:03 -  3216 - EvalCondition: Cond t(%{HTTP_HOST}) op(|) p(^(www\.)?XXXX\.eu$) => TRUETue Apr 27 09:40:03 -  3216 - EvalConditionList: rule 1, TRUE, Rule will applyTue Apr 27 09:40:03 -  3216 - ReplaceServerVariables: in='http://localhost:8080/$1' out='http://localhost:8080/$1'Tue Apr 27 09:40:03 -  3216 - GenerateReplacementString: result 'http://localhost:8080/iirfstatus.iirf'Tue Apr 27 09:40:03 -  3216 - EvaluateRules: Result (length 37): http://localhost:8080/iirfstatus.iirfTue Apr 27 09:40:03 -  3216 - EvaluateRules: returning 999Tue Apr 27 09:40:03 -  3216 - DoRewrites: Proxy to: 'http://localhost:8080/iirfstatus.iirf'Tue Apr 27 09:40:03 -  3216 - GetServerVariable_AutoFree: getting 'REQUEST_METHOD'Tue Apr 27 09:40:03 -  3216 - GetServerVariable_AutoFree: 4 bytesTue Apr 27 09:40:03 -  3216 - GetServerVariable_AutoFree: result 'GET'Tue Apr 27 09:40:03 -  3216 - IirfProxy_SendRequest: http://localhost:8080/iirfstatus.iirfTue Apr 27 09:40:03 -  3216 - GetServerVariable_AutoFree: getting 'REMOTE_ADDR'Tue Apr 27 09:40:03 -  3216 - GetServerVariable_AutoFree: 13 bytesTue Apr 27 09:40:03 -  3216 - GetServerVariable_AutoFree: result 'XX.YY.ZZ.20'Tue Apr 27 09:40:03 -  3216 - GetServerVariable_AutoFree: getting 'LOCAL_ADDR'Tue Apr 27 09:40:03 -  3216 - GetServerVariable_AutoFree: 13 bytesTue Apr 27 09:40:03 -  3216 - GetServerVariable_AutoFree: result 'XX.YY.ZZ.20'Tue Apr 27 09:40:03 -  3216 - GetServerVariable_AutoFree: getting 'HTTP_REFERER'Tue Apr 27 09:40:03 -  3216 - GetServerVariable_AutoFree: 128 bytesTue Apr 27 09:40:03 -  3216 - GetServerVariable_AutoFree: result ''Tue Apr 27 09:40:03 -  3216 - GetServerVariable_AutoFree: getting 'HTTP_USER_AGENT'Tue Apr 27 09:40:03 -  3216 - GetServerVariable_AutoFree: 118 bytesTue Apr 27 09:40:03 -  3216 - GetServerVariable_AutoFree: result 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)'Tue Apr 27 09:40:03 -  3216 - GetServerVariable_AutoFree: getting 'HTTP_ACCEPT'Tue Apr 27 09:40:03 -  3216 - GetServerVariable_AutoFree: 164 bytesTue Apr 27 09:40:03 -  3216 - GetServerVariable_AutoFree: result 'image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap, application/x-ms-application, */*'Tue Apr 27 09:40:03 -  3216 - GetServerVariable_AutoFree: getting 'SERVER_NAME'Tue Apr 27 09:40:03 -  3216 - GetServerVariable_AutoFree: 16 bytesTue Apr 27 09:40:03 -  3216 - GetServerVariable_AutoFree: result 'www.XXXX.eu'Tue Apr 27 09:40:03 -  3216 - GetServerVariable_AutoFree: getting 'ALL_RAW'Tue Apr 27 09:40:03 -  3216 - GetServerVariable_AutoFree: 421 bytesTue Apr 27 09:40:03 -  3216 - GetServerVariable_AutoFree: result 'Connection: Keep-Alive
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap, application/x-ms-application, */*
Accept-Encoding: gzip, deflate
Accept-Language: en-us
Host: www.XXXX.eu
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)
UA-CPU: x86
'Tue Apr 27 09:40:03 -  3216 - ProxyRequest: host(localhost)  path+query(/iirfstatus.iirf)Tue Apr 27 09:40:03 -  3216 - ParseAllRaw: Connection: Keep-Alive
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap, application/x-ms-application, */*
Accept-Encoding: gzip, deflate
Accept-Language: en-us
Host: www.XXXX.eu
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)
UA-CPU: x86
Tue Apr 27 09:40:03 -  3216 - ParseAllRaw: hdr Connection: Keep-AliveTue Apr 27 09:40:03 -  3216 - ParseAllRaw: hdr Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap, application/x-ms-application, */*Tue Apr 27 09:40:03 -  3216 - ParseAllRaw: hdr Accept-Encoding: gzip, deflateTue Apr 27 09:40:03 -  3216 - ParseAllRaw: hdr Accept-Language: en-usTue Apr 27 09:40:03 -  3216 - ParseAllRaw: hdr Host: www.XXXX.euTue Apr 27 09:40:03 -  3216 - ParseAllRaw: hdr User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)Tue Apr 27 09:40:03 -  3216 - ParseAllRaw: hdr UA-CPU: x86Tue Apr 27 09:40:03 -  3216 - ParseAllRaw: found 7 headersTue Apr 27 09:40:03 -  3216 - GenerateHeadersString: rh(0x02013E68) nh(localhost) sn(www.XXXX.eu) la(XX.YY.ZZ.20) ra(XX.YY.ZZ.20) ts(0)Tue Apr 27 09:40:03 -  3216 - GenerateHeadersString: header Host: localhostTue Apr 27 09:40:03 -  3216 - GenerateHeadersString: header Via: 1.1 XX.YY.ZZ.20 (IIRF v2.1)Tue Apr 27 09:40:03 -  3216 - GenerateHeadersString: header X-Forwarded-Server: www.XXXX.euTue Apr 27 09:40:03 -  3216 - GenerateHeadersString: header X-Forwarded-For: XX.YY.ZZ.20Tue Apr 27 09:40:03 -  3216 - GenerateHeadersString: header Connection: Keep-AliveTue Apr 27 09:40:03 -  3216 - GenerateHeadersString: header Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap, application/x-ms-application, */*Tue Apr 27 09:40:03 -  3216 - GenerateHeadersString: header Accept-Encoding: gzip, deflateTue Apr 27 09:40:03 -  3216 - GenerateHeadersString: header Accept-Language: en-usTue Apr 27 09:40:03 -  3216 - GenerateHeadersString: header X-Forwarded-Host: www.XXXX.euTue Apr 27 09:40:03 -  3216 - GenerateHeadersString: header User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)Tue Apr 27 09:40:03 -  3216 - GenerateHeadersString: header UA-CPU: x86Tue Apr 27 09:40:03 -  3216 - ProxyRequest: WinHttpConnect localhost 8080Tue Apr 27 09:40:03 -  3216 - ProxyRequest: WinHttpOpenRequest: GET /iirfstatus.iirfTue Apr 27 09:40:03 -  3216 - ProxyRequest: WinHttpAddRequestHeadersTue Apr 27 09:40:03 -  3216 - ProxyRequest: WinHttpSendRequestTue Apr 27 09:40:03 -  3216 - Cached: DLL_THREAD_DETACHTue Apr 27 09:40:03 -  3216 - ProxyRequest: WinHttpReceiveResponseTue Apr 27 09:40:03 -  3216 - ProxyRequest: WinHttpQueryHeadersTue Apr 27 09:40:03 -  3216 - ProxyRequest: WinHttpQueryHeaders: status 404Tue Apr 27 09:40:03 -  3216 - Proxy_SetResponseHeaders: starting status 404Tue Apr 27 09:40:03 -  3216 - Proxy_SetResponseHeaders: status NOT OK, not TIMEOUTTue Apr 27 09:40:03 -  3216 - Proxy_SetResponseHeaders: status string '404 Not Found'Tue Apr 27 09:40:03 -  3216 - ProcessResponseHeaders: keep    'Date: Tue, 27 Apr 2010 08:40:03 GMT'Tue Apr 27 09:40:03 -  3216 - ProcessResponseHeaders: keep    'Content-Type: text/html'Tue Apr 27 09:40:03 -  3216 - ProcessResponseHeaders: keep    'Content-Length: 85'Tue Apr 27 09:40:03 -  3216 - ProcessResponseHeaders: add 'Via: 1.1 XX.YY.ZZ.20 (IIRF v2.1)'Tue Apr 27 09:40:03 -  3216 - ProcessResponseHeaders: all Date: Tue, 27 Apr 2010 08:40:03 GMT
Content-Type: text/html
Content-Length: 85
Via: 1.1 XX.YY.ZZ.20 (IIRF v2.1)


Tue Apr 27 09:40:03 -  3216 - ProxyRequest: WinHttpReadData 85Tue Apr 27 09:40:03 -  3216 - ProxyRequest: WinHttpReadData nRead= 85Tue Apr 27 09:40:03 -  3216 - ProxyRequest: chunks(1) totalBytes(85)Tue Apr 27 09:40:03 -  3216 - DoRewrites: Proxy complete: 1 chunks, 85 bytes'Tue Apr 27 09:40:03 -  3216 - ReleaseOrExpireVdirConfig: vdir '/LM/W3SVC/16544/Root' (era=0) (rc=0) (Expired=0) (ptr=0x02013F08)...

 

My aim is to proxy the requests to localhost:8080 but I have trouble with the POST requests. (GET requests do work fine)

I've read comments in the forum from other users who claim that they have resolved this issue with IIRF as an ISAPI extension.

How can I debug this ?

Any help will be greatly appreciated ;->

Coordinator
Apr 27, 2010 at 5:09 PM

I can try to help you troubleshoot this, but you'll need to post your log file in a format that's readable. 

Right now I can't read it, every line is merged with the next.

Also, you say "I have troubble with POST requests" but I don't know what that means. What trouble do you have?

If you have IIRF configured properly for use as a proxy, then you should be able to tickle any URL ending in .iirf and get the diagnostic page from IIRF.  Like this: 

If that's not working, then you probably have a configuration problem.

 

Apr 27, 2010 at 6:47 PM

Cheeso,

Thank you for being so kind to help !

I post the log here in a readable format .

 

Tue Apr 27 09:40:03 - 3216 - -------------------------------------------------------

Tue Apr 27 09:40:03 - 3216 - Ionic ISAPI Rewriting Filter (IIRF) 2.1.1.9 RELEASE

Tue Apr 27 09:40:03 - 3216 - IIRF was built on: Apr 19 2010 22:17:30

Tue Apr 27 09:40:03 - 3216 - Cached: DLL_PROCESS_ATTACH

Tue Apr 27 09:40:03 - 3216 - Cached: Process ID: 29532

Tue Apr 27 09:40:03 - 3216 - Cached: ReadServerConfig: C:\Program Files\Ionic Shade\IIRF 2.1\IirfGlobal.ini(23): Filter Priority is now: HIGH (0x80000)

Tue Apr 27 09:40:03 - 3216 - Cached: ReadServerConfig: C:\Program Files\Ionic Shade\IIRF 2.1\IirfGlobal.ini(46): NotifyLog setting is now: OFF

Tue Apr 27 09:40:03 - 3216 - Cached: ReadServerConfig: C:\Program Files\Ionic Shade\IIRF 2.1\IirfGlobal.ini(63): RewriteEngine setting is now: ON

Tue Apr 27 09:40:03 - 3216 - Cached: DLL_PROCESS_ATTACH - complete

Tue Apr 27 09:40:03 - 3216 - Cached: GetFilterVersion

Tue Apr 27 09:40:03 - 3216 - GetLogFile: app:'/LM/W3SVC/16544/Root' new log:'C:\iirflogs\iirf.29532.log'

Tue Apr 27 09:40:03 - 3216 - ReadVdirConfig: actual log file 'C:\iirflogs\iirf.29532.log'

Tue Apr 27 09:40:03 - 3216 - ReadVdirConfig: ini file: 'C:\Inetpub\vhosts\XXXX.eu\httpdocs\Iirf.ini'

Tue Apr 27 09:40:03 - 3216 - ReadVdirConfig: ini file timestamp: 2010/04/27 08:20:57 GMT Daylight Time

Tue Apr 27 09:40:03 - 3216 - ReadVdirConfig: cfg(0x02013F08)

Tue Apr 27 09:40:03 - 3216 - ReadVdirConfig: LogLevel = 5

Tue Apr 27 09:40:03 - 3216 - ReadVdirConfig: pass 2

Tue Apr 27 09:40:03 - 3216 - ReadVdirConfig: C:\Inetpub\vhosts\XXXX.eu\httpdocs\Iirf.ini(3): StatusInquiry ON (--) (--)

Tue Apr 27 09:40:03 - 3216 - ReadVdirConfig: C:\Inetpub\vhosts\XXXX.eu\httpdocs\Iirf.ini(3): IIRF Status Inquiry is enabled at path '/iirfStatus' for local requests only.

Tue Apr 27 09:40:03 - 3216 - ReadVdirConfig: C:\Inetpub\vhosts\XXXX.eu\httpdocs\Iirf.ini(6): RewriteCond   %{HTTP_HOST} ^(www\.)?XXXX\.eu$ '[I]'

Tue Apr 27 09:40:03 - 3216 - ParseCondModifierFlags: '[I]'

Tue Apr 27 09:40:03 - 3216 - ParseCondModifierFlags: token 'I'

Tue Apr 27 09:40:03 - 3216 - Cond: Case Insensitive match

Tue Apr 27 09:40:03 - 3216 - ReadVdirConfig: C:\Inetpub\vhosts\XXXX.eu\httpdocs\Iirf.ini(8): ProxyPass (rule 1) '^/(.*?)$' 'http://localhost:8080/$1'     [I]

Tue Apr 27 09:40:03 - 3216 - ParseRuleModifierFlags: '[I]'

Tue Apr 27 09:40:03 - 3216 - ParseRuleModifierFlags: token 'I'

Tue Apr 27 09:40:03 - 3216 - rule: Case Insensitive match

Tue Apr 27 09:40:03 - 3216 - ReadVdirConfig: not a duplicate rule...

Tue Apr 27 09:40:03 - 3216 - ReadVdirConfig: Done reading INI for vdir(/), found 1 rules (0 errors, 0 warnings) on 9 lines

Tue Apr 27 09:40:03 - 3216 - GetVdirConfig: Obtain vdir '/LM/W3SVC/16544/Root' (era=0) (rc=1) (Expired=0) (ptr=0x02013F08)...

Tue Apr 27 09:40:03 - 3216 - HttpFilterProc: SF_NOTIFY_URL_MAP

Tue Apr 27 09:40:03 - 3216 - HttpFilterProc: cfg= 0x02013F08

Tue Apr 27 09:40:03 - 3216 - HttpFilterProc: SF_NOTIFY_AUTH_COMPLETE

Tue Apr 27 09:40:03 - 3216 - DoRewrites

Tue Apr 27 09:40:03 - 3216 - GetServerVariable_AutoFree: getting 'url'

Tue Apr 27 09:40:03 - 3216 - GetServerVariable_AutoFree: 128 bytes

Tue Apr 27 09:40:03 - 3216 - GetServerVariable_AutoFree: result ''

Tue Apr 27 09:40:03 - 3216 - GetHeader_AutoFree: getting 'url'

Tue Apr 27 09:40:03 - 3216 - GetHeader_AutoFree: 17 bytes   ptr:0x000CE0C0

Tue Apr 27 09:40:03 - 3216 - GetHeader_AutoFree: 'url' = '/iirfstatus.iirf'

Tue Apr 27 09:40:03 - 3216 - GetServerVariable_AutoFree: getting 'QUERY_STRING'

Tue Apr 27 09:40:03 - 3216 - GetServerVariable_AutoFree: 1 bytes

Tue Apr 27 09:40:03 - 3216 - GetServerVariable_AutoFree: result ''

Tue Apr 27 09:40:03 - 3216 - GetHeader_AutoFree: getting 'method'

Tue Apr 27 09:40:03 - 3216 - GetHeader_AutoFree: 4 bytes   ptr:0x000CE1D0

Tue Apr 27 09:40:03 - 3216 - GetHeader_AutoFree: 'method' = 'GET'

Tue Apr 27 09:40:03 - 3216 - DoRewrites: New Url, before decoding: '/iirfstatus.iirf'

Tue Apr 27 09:40:03 - 3216 - DoRewrites: Url (no decoding): '/iirfstatus.iirf'

Tue Apr 27 09:40:03 - 3216 - EvaluateRules: depth=0

Tue Apr 27 09:40:03 - 3216 - EvaluateRules: Rule 1 : 2 matches

Tue Apr 27 09:40:03 - 3216 - GetServerVariable: getting 'HTTP_HOST'

Tue Apr 27 09:40:03 - 3216 - GetServerVariable: 16 bytes

Tue Apr 27 09:40:03 - 3216 - GetServerVariable: result 'www.XXXX.eu'

Tue Apr 27 09:40:03 - 3216 - ReplaceServerVariables: VariableName='HTTP_HOST' Value='www.XXXX.eu'

Tue Apr 27 09:40:03 - 3216 - ReplaceServerVariables: in='%{HTTP_HOST}' out='www.XXXX.eu'

Tue Apr 27 09:40:03 - 3216 - EvalCondition: ts1 'www.XXXX.eu'

Tue Apr 27 09:40:03 - 3216 - GenerateReplacementString: result 'www.XXXX.eu'

Tue Apr 27 09:40:03 - 3216 - EvalCondition: t(www.XXXX.eu) op(|) p(^(www\.)?XXXX\.eu$)

Tue Apr 27 09:40:03 - 3216 - EvalCondition: match result: 2 (match)

Tue Apr 27 09:40:03 - 3216 - EvalCondition: Cond t(%{HTTP_HOST}) op(|) p(^(www\.)?XXXX\.eu$) => TRUE

Tue Apr 27 09:40:03 - 3216 - EvalConditionList: rule 1, TRUE, Rule will apply

Tue Apr 27 09:40:03 - 3216 - ReplaceServerVariables: in='http://localhost:8080/$1' out='http://localhost:8080/$1'

Tue Apr 27 09:40:03 - 3216 - GenerateReplacementString: result 'http://localhost:8080/iirfstatus.iirf'

Tue Apr 27 09:40:03 - 3216 - EvaluateRules: Result (length 37): http://localhost:8080/iirfstatus.iirf

Tue Apr 27 09:40:03 - 3216 - EvaluateRules: returning 999

Tue Apr 27 09:40:03 - 3216 - DoRewrites: Proxy to: 'http://localhost:8080/iirfstatus.iirf'

Tue Apr 27 09:40:03 - 3216 - GetServerVariable_AutoFree: getting 'REQUEST_METHOD'

Tue Apr 27 09:40:03 - 3216 - GetServerVariable_AutoFree: 4 bytes

Tue Apr 27 09:40:03 - 3216 - GetServerVariable_AutoFree: result 'GET'

Tue Apr 27 09:40:03 - 3216 - IirfProxy_SendRequest: http://localhost:8080/iirfstatus.iirf

Tue Apr 27 09:40:03 - 3216 - GetServerVariable_AutoFree: getting 'REMOTE_ADDR'

Tue Apr 27 09:40:03 - 3216 - GetServerVariable_AutoFree: 13 bytes

Tue Apr 27 09:40:03 - 3216 - GetServerVariable_AutoFree: result 'XX.YY.ZZ.20'

Tue Apr 27 09:40:03 - 3216 - GetServerVariable_AutoFree: getting 'LOCAL_ADDR'

Tue Apr 27 09:40:03 - 3216 - GetServerVariable_AutoFree: 13 bytes

Tue Apr 27 09:40:03 - 3216 - GetServerVariable_AutoFree: result 'XX.YY.ZZ.20'

Tue Apr 27 09:40:03 - 3216 - GetServerVariable_AutoFree: getting 'HTTP_REFERER'

Tue Apr 27 09:40:03 - 3216 - GetServerVariable_AutoFree: 128 bytes

Tue Apr 27 09:40:03 - 3216 - GetServerVariable_AutoFree: result ''

Tue Apr 27 09:40:03 - 3216 - GetServerVariable_AutoFree: getting 'HTTP_USER_AGENT'

Tue Apr 27 09:40:03 - 3216 - GetServerVariable_AutoFree: 118 bytes

Tue Apr 27 09:40:03 - 3216 - GetServerVariable_AutoFree: result 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)'

Tue Apr 27 09:40:03 - 3216 - GetServerVariable_AutoFree: getting 'HTTP_ACCEPT'

Tue Apr 27 09:40:03 - 3216 - GetServerVariable_AutoFree: 164 bytes

Tue Apr 27 09:40:03 - 3216 - GetServerVariable_AutoFree: result 'image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap, application/x-ms-application, */*'

Tue Apr 27 09:40:03 - 3216 - GetServerVariable_AutoFree: getting 'SERVER_NAME'

Tue Apr 27 09:40:03 - 3216 - GetServerVariable_AutoFree: 16 bytes

Tue Apr 27 09:40:03 - 3216 - GetServerVariable_AutoFree: result 'www.XXXX.eu'

Tue Apr 27 09:40:03 - 3216 - GetServerVariable_AutoFree: getting 'ALL_RAW'

Tue Apr 27 09:40:03 - 3216 - GetServerVariable_AutoFree: 421 bytes

Tue Apr 27 09:40:03 - 3216 - GetServerVariable_AutoFree: result 'Connection: Keep-Alive

 

Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap, application/x-ms-application, */*

 

Accept-Encoding: gzip, deflate

 

Accept-Language: en-us

 

Host: www.XXXX.eu

 

User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)

 

UA-CPU: x86

 

'

Tue Apr 27 09:40:03 - 3216 - ProxyRequest: host(localhost) path+query(/iirfstatus.iirf)

Tue Apr 27 09:40:03 - 3216 - ParseAllRaw: Connection: Keep-Alive

 

Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap, application/x-ms-application, */*

 

Accept-Encoding: gzip, deflate

 

Accept-Language: en-us

 

Host: www.XXXX.eu

 

User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)

 

UA-CPU: x86

 

Tue Apr 27 09:40:03 - 3216 - ParseAllRaw: hdr Connection: Keep-Alive

Tue Apr 27 09:40:03 - 3216 - ParseAllRaw: hdr Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap, application/x-ms-application, */*

Tue Apr 27 09:40:03 - 3216 - ParseAllRaw: hdr Accept-Encoding: gzip, deflate

Tue Apr 27 09:40:03 - 3216 - ParseAllRaw: hdr Accept-Language: en-us

Tue Apr 27 09:40:03 - 3216 - ParseAllRaw: hdr Host: www.XXXX.eu

Tue Apr 27 09:40:03 - 3216 - ParseAllRaw: hdr User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)

Tue Apr 27 09:40:03 - 3216 - ParseAllRaw: hdr UA-CPU: x86

Tue Apr 27 09:40:03 - 3216 - ParseAllRaw: found 7 headers

Tue Apr 27 09:40:03 - 3216 - GenerateHeadersString: rh(0x02013E68) nh(localhost) sn(www.XXXX.eu) la(XX.YY.ZZ.20) ra(XX.YY.ZZ.20) ts(0)

Tue Apr 27 09:40:03 - 3216 - GenerateHeadersString: header Host: localhost

Tue Apr 27 09:40:03 - 3216 - GenerateHeadersString: header Via: 1.1 XX.YY.ZZ.20 (IIRF v2.1)

Tue Apr 27 09:40:03 - 3216 - GenerateHeadersString: header X-Forwarded-Server: www.XXXX.eu

Tue Apr 27 09:40:03 - 3216 - GenerateHeadersString: header X-Forwarded-For: XX.YY.ZZ.20

Tue Apr 27 09:40:03 - 3216 - GenerateHeadersString: header Connection: Keep-Alive

Tue Apr 27 09:40:03 - 3216 - GenerateHeadersString: header Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap, application/x-ms-application, */*

Tue Apr 27 09:40:03 - 3216 - GenerateHeadersString: header Accept-Encoding: gzip, deflate

Tue Apr 27 09:40:03 - 3216 - GenerateHeadersString: header Accept-Language: en-us

Tue Apr 27 09:40:03 - 3216 - GenerateHeadersString: header X-Forwarded-Host: www.XXXX.eu

Tue Apr 27 09:40:03 - 3216 - GenerateHeadersString: header User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)

Tue Apr 27 09:40:03 - 3216 - GenerateHeadersString: header UA-CPU: x86

Tue Apr 27 09:40:03 - 3216 - ProxyRequest: WinHttpConnect localhost 8080

Tue Apr 27 09:40:03 - 3216 - ProxyRequest: WinHttpOpenRequest: GET /iirfstatus.iirf

Tue Apr 27 09:40:03 - 3216 - ProxyRequest: WinHttpAddRequestHeaders

Tue Apr 27 09:40:03 - 3216 - ProxyRequest: WinHttpSendRequest

Tue Apr 27 09:40:03 - 3216 - Cached: DLL_THREAD_DETACH

Tue Apr 27 09:40:03 - 3216 - ProxyRequest: WinHttpReceiveResponse

Tue Apr 27 09:40:03 - 3216 - ProxyRequest: WinHttpQueryHeaders

Tue Apr 27 09:40:03 - 3216 - ProxyRequest: WinHttpQueryHeaders: status 404

Tue Apr 27 09:40:03 - 3216 - Proxy_SetResponseHeaders: starting status 404

Tue Apr 27 09:40:03 - 3216 - Proxy_SetResponseHeaders: status NOT OK, not TIMEOUT

Tue Apr 27 09:40:03 - 3216 - Proxy_SetResponseHeaders: status string '404 Not Found'

Tue Apr 27 09:40:03 - 3216 - ProcessResponseHeaders: keep   'Date: Tue, 27 Apr 2010 08:40:03 GMT'

Tue Apr 27 09:40:03 - 3216 - ProcessResponseHeaders: keep   'Content-Type: text/html'

Tue Apr 27 09:40:03 - 3216 - ProcessResponseHeaders: keep   'Content-Length: 85'

Tue Apr 27 09:40:03 - 3216 - ProcessResponseHeaders: add 'Via: 1.1 XX.YY.ZZ.20 (IIRF v2.1)'

Tue Apr 27 09:40:03 - 3216 - ProcessResponseHeaders: all Date: Tue, 27 Apr 2010 08:40:03 GMT

 

Content-Type: text/html

 

Content-Length: 85

 

Via: 1.1 XX.YY.ZZ.20 (IIRF v2.1)

 

 

 

Tue Apr 27 09:40:03 - 3216 - ProxyRequest: WinHttpReadData 85

Tue Apr 27 09:40:03 - 3216 - ProxyRequest: WinHttpReadData nRead= 85

Tue Apr 27 09:40:03 - 3216 - ProxyRequest: chunks(1) totalBytes(85)

Tue Apr 27 09:40:03 - 3216 - DoRewrites: Proxy complete: 1 chunks, 85 bytes'

Tue Apr 27 09:40:03 - 3216 - ReleaseOrExpireVdirConfig: vdir '/LM/W3SVC/16544/Root' (era=0) (rc=0) (Expired=0) (ptr=0x02013F08)...

 

 

My situation is like this :

I have an application running on port 8080 on localhost, which can be accessed through

http://localhost:8080/tvguide

My domain name is XXXX.eu and I want people to type http://www.XXXX.eu/tvguide or http://XXXX.eu/tvguide on their browsers to reach the app.

So far the proxy works very smoothly but the problem is with some buttons in the app which issue POST requests to the server.

My understanding is that I need to configure IIRF.dll as a ISAPI extension which I did, as described in the docs.

However it is not working because :

a) The buttons still don't work

b) The test page http://XXXX.eu/tvguide.iirf does not appear (well I guess this alone is enough)

 

So I was wondering how should I go about debugging the whole issue?

 

 

Coordinator
Apr 27, 2010 at 10:32 PM

Here's what I think:

Your rules proxy every incoming request to http://localhost:8080.  When you submit /tvguide.iirf to the IIS server, IIRF (in its role as a filter) grabs the URL, and proxies it to http://localhost:8080 .  The server at that location doesn't know what to do with a request like tvguide.iirf.  So you get a 404 (I suppose).

To correct this, you will need to change your rule so that it does not proxy requests with the .iirf extension. It's enough to include (?!\.iirf) in the pattern for the ProxyPass directive.

I think it would be reasonable to expect that IIRF should never proxy requests that have .iirf as an extension, regardless what the rules say.  I'll create a workitem for that issue.

 

Coordinator
Apr 27, 2010 at 10:34 PM
This discussion has been copied to a work item. Click here to go to the work item and continue the discussion.
Apr 27, 2010 at 11:53 PM

Unfortunately it appears that this is not my problem, because I tried not only excluding URLS with a .iirf suffix but also proxying only a handful of URLs, without success (the a.iirf URL , not proxied, failed to load again).

So I think the problem has to be something about the server extension itself but I cannot figure out what it could be.

As I said the proxy server works ok, however the green arrow that should indicate this, does not appear. I doubt this could be relevant, but I thought I'd better mention it. Also, my domain name is internationalized (of the form www.xn--XYZW.eu) however this fact has not given me any headaches - so far.

 

PS . I have installed the latest version 2.1.1.11 - didn't see any change though.

PS2 : Is it possible that file permissions have anything to do with the server extensions configuration? Of course the IIRF.dll should have sufficient permissions...

PS3 . I am not sure if I should post here or in the work item, I believe this issue is not related to the work item though

 

Coordinator
Apr 28, 2010 at 12:45 AM
Edited Apr 28, 2010 at 1:09 AM

The workitem I created was just for tracking that one change.  I've fixed that now, anyway.  So, no... I don't think we should move this discussion to the workitem.

About the problem with IIRF acting as an extension - I think you are right to focus on getting that working.  Maybe you could change your ini file to remove the ProxyPass rule, and ... well all rules except for one.  Put one rule in your ini file, a rule that you're sure won't fire.  Then submit a request like anything.iirf.  Also submit a request like /iirfStatus . Both of these should work.   The green arrow is really a feel-good kind of thing.  The other

Make sure you get these working before you introduce the ProxyPass directive .  

There are no additional file permissions required for IIRF to act as an extension.  You do need to make some changes in the IIS Manager, but these steps are outlined in the doc, which you said you followed. 

If I were you, I would double-check those steps - the steps required to configure IIRF as an extension.

Coordinator
Apr 28, 2010 at 4:26 PM

Can you try running this from a command line?

cscript c:\Windows\System32\IisExt.vbs 
     /AddFile c:\WINDOWS\system32\inetsrv\IIRF\IIRF.dll 
     1 IIRF 0 IIRF

(the above should be all-on-one-line)

Apr 29, 2010 at 12:58 AM

I did run this from cmd and it executed ok, however, no visible result . The .iirf extension still not taken into account and 404 is returned.

 Is it possible that the extension works for the 'default' site but not for the domain name? I have seen most examples are tested on the default site.

Coordinator
Apr 29, 2010 at 6:39 AM
Edited Apr 29, 2010 at 7:19 PM

I think it's not installed properly.  I looked through the installer very closely, and found a few problems with it.

What I suggest is this: manually uninstall IIRF, get v2.1.1.14, and then re-install it, using the MSI file.

To uninstall IIRF manually: 

  • open IIS Manager
  • right click on the Web Sites node:
  • Select Properties from the popup, then click on the ISAPI Filters tab.  Then select the IIRF entry.
  • Click Remove .
  • Select the Home Directory tab. click Configuration. In the application extensions pane, Scroll down to find .iirf.
  • click Remove
  • Now, back on the left hand side, select "Web Service Extensions"
  • On the right-hand-side, find the entry for IIRF.
  • Click Remove
  • Now, outside IIS Manager, use Windows Explorer. Find the location where you installed the IIRF binaries. Remove all the IIRF files. Remove the folder, too, if there are no other files present in it.

You may need to adjust that, if you've installed IIRF on a particular website.

Now, re-install, using IIRF v2.1.1.14.

The installer for prior versions was not functioning correctly for the ISAPI Extension part. I think this may be the problem you were seeing.

Apr 29, 2010 at 12:47 PM

Hmmm there is no .msi I guess ?

I did as you suggested, except for installing the new version with the msi installer, since I could not find it . I just copied the files from the bin directory, so if the installer is doing more than copying files, this has not been done.

The result was the same as before, the Filter running smoothly, but the extension not being recognized.

Coordinator
Apr 29, 2010 at 4:55 PM

The MSI is available here:

http://iirf.codeplex.com/releases/view/36814

 

Be sure to get v2.1.1.14

Apr 29, 2010 at 5:41 PM

Thank you , Cheeso.

The MSI installer refuses to run because there is an older bversion of IIRF installed (although I uninstalled exactly as you described)

When I tried Add/Remove program from CP  the uninstaller of IIRF failed (the error was : a script could not be run)....

Coordinator
Apr 29, 2010 at 6:03 PM

Yes, well the uninstaller for prior versions was broken, and so wouldn't have worked for you.

To correct that problem you will need to zap the old install.  If you have the Windows SDK installed on your machine, you can use msizap.exe to do this.  If you're not sure if you have the Windows SDK, then you don't have it.  In that case, go to http://www.zshare.net/download/75520430b0687607/ and download that file, and save it as msizap.exe.

The command you want to run is:

msizap.exe T {ea282070-b397-4a59-89be-fc8ae01f6f38} 

That clears the registry of any record that IIRF has been installed.  At that point you should be able to proceed with installing he v2.1.1.14 MSI. 

 

Apr 29, 2010 at 7:00 PM

That worked !

The test pages are in place and the proxy does fine.

I checked those buttons in my app and glad to see, they are back to life  ;->

So it appears that it was an issue of the old installer ?!

Thanks Cheeso, great job !

Coordinator
Apr 29, 2010 at 7:18 PM

ya, the old installer was not correct.   It was not correctly setting up the ISAPI Extension.  
Thanks for working through this with me.   You're helping to make IIRF better for everyone.