2011-10-01 44 views
2

我目前在使用IIS中的httphandlers挣扎。 我正在VS2010和Cassini的.NET4中开发一个网站。在这个网站上,我有一个画廊,其照片通过我的处理程序加载。 例如http://mywebsite.com/Gallery/123/Pic1.jpg 我的HTTP处理程序获取ID 123并从数据库返回图片(简化)。在IIS6或IIS7经典模式下的HTTP处理程序

所以,一切工作正常在卡西尼(VS综合网络服务器)和IIS7在“集成模式”。图片像他们应该加载一样。

但我必须在使用IIS6的共享托管服务器上部署此站点。

经过许多搜索和自己的日志记录,我发现,请求没有路由到我的处理程序,所以我从IIS获得404。

我定义这是足以让IIS7集成模式:

<system.web> 
    <handlers> 
     <add verb="*" path="Gallery/*/*" type="[coorect Type spec]" /> 
    </handlers> 
</system.web> 

对于IIS7的经典模式我不得不添加

<system.webServer> 
    <handlers> 
     <add name="ImageHandler" verb="*" path="Galler</*/*" type="[type]" modules="IsapiModule" scriptProcessor="c:\windows\Microsoft.net\framework\v4.0.30319\aspnet_isapi.dll"/> 
    </handlers 
</system.webServer> 

这最后的配置只能蒙山东西模块和scriptprocessor在属性...

但该配置在IIS6中不起作用....

任何人都可以帮助我吗?

+0

您是否找到任何解决方案? –

回答

0

问题是IIS6通常通过使用文件扩展名决定通过请求传递的ISAPI处理程序。所以它看到.jpg并尝试从该路径提供静态文件。这也是IIS7引用的经典模式。你会注意到你在你的配置中引用了aspnet_isapi.dll,因为它需要被告知应该如何处理这个。一旦你将它传递给aspnet_isapi,asp.net http处理管道就会启动,你可以执行你的处理程序。

最简单的修复方法是查找支持IIS7的主机。否则,你可以看到他们是否有任何网址重写选项。有了这些,你可以重写一些东西,以便在url上附加一个.ashx,这会让IIS6抓住它并将其放入asp.net管道,并且你的处理程序会触发。你也可以看到它们是否允许通配符映射,但对于大多数共享主机来说这是非常高的顺序。

相关问题