Simplicity is the ultimate sophistication

Time is a tangled web. Try not to dwell on all the loose ends..

ISAPI Filter on IIS7.5

寫 ISAPI 幾件要注意的事 (這邊只有用到win32 api):

  1. Project property 裡面的設定

    a. 確定你的IIS是32 or 64 bits, 然後記得設定Visual Studio裡面的Configuration Manager裡面的Platform記得選成想對應的, C/C++是沒有像C#一般可以For All CPU的. 如果做出來是32bits的, 但是IIS那邊是64bits的, Application pool裡面有個選項可以讓它跑32bits.

    b. Configuration Properties裡面的General, Configurtion Type當然是(.dll), Use of MFC我是選Use Standard Windows Libraries, 因為我只有用到Win32 API, Use of ATL則是Not Using ATL, 至於Character Set我倒是都試過, 最後用Not Set.

    c. Configuration Properties裡面的C/C++Code Generation, Runtime Library請選Multi-threaded(/MT).

    d. 如果你要用DebugView去看運行的狀況, 那記得把Linker->Debugging->General Debug Info打開.

  2. GetFilterVersion Function裡面記得要設定dwFilterVersion, lpszFilterDesc, dwFlags.

  3. 要能夠插旗子看資料可以呼叫OutputDebugString, 然後掛上IIS用DebugView去看.

至於IIS7.5的部分, 請確定Modules裡面有IsapiFilterModule.

Modules

掛上去理論上網站就會頓一下, 然後就會生效了. 如果是Shared Configuration就需要逐台機器iisreset了.