Hi,<br><br>I saw some requests of people for the abovementioned combination but no easy answer. Sure there is the option of putting apache with mod_proxy in front of your IIS but that adds some administration complexicity.<br>

<br>I hoped for a better solution and after some experimenting I got Tilecache working with the combination<br><br>IIS - Pythonwin32 ISAPI - isapi_wsgi<br><br>I pretty much followed the tutorial here:<br><a href="http://wiki.pylonshq.com/display/pylonscookbook/Serving+a+Pylons+app+with+IIS" target="_blank">http://wiki.pylonshq.com/display/pylonscookbook/Serving+a+Pylons+app+with+IIS</a><br>

<br>The script where it&#39;s necessary to put Tilecache instead of Pylons goes like this:<br><br>import isapi_wsgi<br>from TileCache.Service import wsgiApp<br><br># The entry points for the ISAPI extension.<br>def __ExtensionFactory__():<br>

&nbsp;&nbsp;&nbsp; return isapi_wsgi.ISAPIThreadPoolHandler(wsgiApp)<br><br>if __name__==&#39;__main__&#39;:<br>&nbsp;&nbsp;&nbsp; from isapi.install import *<br>&nbsp;&nbsp;&nbsp; params = ISAPIParameters()<br>&nbsp;&nbsp;&nbsp; sm = [<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ScriptMapParams(Extension=&quot;*&quot;, Flags=0)<br>

&nbsp;&nbsp;&nbsp; ]<br>&nbsp;&nbsp;&nbsp; vd = VirtualDirParameters(Name=&quot;tilecache_isapi&quot;,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Description = &quot;tilecache_isapi&quot;,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ScriptMaps = sm,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ScriptMapUpdate = &quot;replace&quot;<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br>&nbsp;&nbsp;&nbsp; params.VirtualDirs = [vd]<br>&nbsp;&nbsp;&nbsp; HandleCommandLine(params)<br><br>Unfortunately after trying the first request Tilecache didn&#39;t go through it&#39;s initialization writing this error:<br>

<br>Internal Extension Error: Failed to import callback module &#39;tilecache_isapi&#39;<br>Traceback (most recent call last):<br>&nbsp; File &quot;C:\ActivePython25\scripts\tilecache_isapi.py&quot;, line 19, in &lt;module&gt;<br>

&nbsp;&nbsp;&nbsp; from TileCache.Service import wsgiApp<br>
&nbsp; File &quot;c:\activepython25\lib\site-packages\tilecache-2.02-py2.5.egg\TileCache\_<br>_init__.py&quot;, line 3, in &lt;module&gt;<br>&nbsp;&nbsp;&nbsp; from Layer import *<br>&nbsp; File &quot;c:\activepython25\lib\site-packages\tilecache-2.02-py2.5.egg\TileCache\L<br>


ayer.py&quot;, line 6, in &lt;module&gt;<br>&nbsp;&nbsp;&nbsp; from Service import TileCacheException<br>&nbsp; File &quot;C:\ActivePython25\lib\site-packages\tilecache-2.02-py2.5.egg\TileCache\S<br>ervice.py&quot;, line 14, in &lt;module&gt;<br>


&nbsp;&nbsp;&nbsp; workingdir = os.path.abspath(os.path.join(os.getcwd(), os.path.dirname(sys.a<br>rgv[0])))<br>AttributeError: &#39;module&#39; object has no attribute &#39;argv&#39;<br><br>Seem&#39;s like there is no sys.argv attribute in our environment :-(.<br>

<br>I hardcoded my tilecache.cfg location along the line 14 of Tilecache\Service.py and then it worked :-). Of course hacking the original code is ugly but I&#39;m new to both Python and Tilecache. My first thought would be to create a subclass of Tilecache.Service and providing my own initialization methods. But unfortunately this particular lines of Tilecache.Service are not enclosed in method which I could override. What would be the right approach?<br>

<br>Also I didn&#39;t test stability and performance, so If anybody has succes using this combination I would be thankful for comments on these aspects.<br><br>Regards,<br>Tibor<br>