关于routes在开发服务器上与iis正式运行上行为不一至的有关问题

关于routes在开发服务器上与iis正式运行上行为不一至的问题
先说一下背景:
原来有套C/S的程序,服务器端是php的,现在服务器端要改为asp.net.
但是client不希望有任何代码上的更改,包括那个原先是指向php的请求路径名(如: StartGreyHound.php),所以我在global里注册了路由,来让原来的这些请求路径到我指到的ashx里处理。

再来说说问题:
原来一切都是好的,因为都是在vs自带的开发服务器里进行测试,所有的请求都能正常运行,可以正常的跟据注册的路由到指定的处理程序中处理。
然后,移到正式的环境安装到iis里测试,结果问题来了,路由并不能正确的解析,感觉好像被iis内的某个处理器抢占了优先级(按道理路由这块的优先级已经是最高的了),发现带有.php的,他就认为是一个正常的静态文件,然后去找这个文件,结果没找到,出错。

下面是具体的可以反映问题的代码,写在Global.asax的Application_Start里:
routes.Add(new Route("app/test.php", new HttpHandlerRoute("~/src/api/StartGreyHound.ashx")));

在开发服务器里测试时是可以正确运行的:
访问:http://localhost:59539/app/test.php
结果:
关于routes在开发服务器上与iis正式运行上行为不一至的有关问题

然后换到iis下
访问:http://192.168.5.3/app/test.php
结果:
关于routes在开发服务器上与iis正式运行上行为不一至的有关问题

但如果访问的路径是http://192.168.5.3/app/test.php/, 这样又是可以的
关于routes在开发服务器上与iis正式运行上行为不一至的有关问题

而且经我的试验,感觉就好像是iis在处理路由时,在最前面有一个非常高优先级的处理模块,把带.xxx的都认为是静态资源或是有其它处理器去处理,而不会走到我设定的路由处理器里。
比如我把注册路由的代码改成不带.xxx的,他的结果立马就正常了:
代码改为:routes.Add(new Route("app/test_php", new HttpHandlerRoute("~/src/api/StartGreyHound.ashx")));
运行情况:
关于routes在开发服务器上与iis正式运行上行为不一至的有关问题

请各位大侠给我答疑解惑,谢谢啦。
------解决思路----------------------
IIS集成模式下是不需要做映射的,不过如果扩展名没有映射到哪个Handler上的话,可能会导致IIS跳过对其的映射,所以针对这个情况可能有以下三种解决方法:

1.在HttpModule中处理请求,不过还是要在web.config中注册这个模块
2.在system.WebServer下添加 <modules runAllManagedModulesForAllRequests="true" />,这个方法仅在没有其它静态资源的时候推荐
3.把对应的扩展名随便映射到那个HttpHandler,都能让路由正确运行