所以,你必须实现IHttpHandler
一类叫做:MyHandler
和它的命名空间中的Example
,你需要做下面的条目网站的Web.Config
在httpHandlers部分:
<httpHandlers>
<add verb="*" path="*" type="Example.MyHandler"/>
</httpHandlers>
因为这会将所有网址对于您的网站/应用程序,您必须考虑如何提供静态内容(imgs,脚本,样式表等)。一种方法是这样的静态内容一致的URL存储像http://example.com/static/...
,那么你可以设置你的处理程序这样:
<httpHandlers>
<add verb="*" path="*" type="Example.MyHandler"/>
<add verb="GET,HEAD" path="static/*" type="System.Web.StaticFileHandler" />
</httpHandlers>
对于本地开发的网络服务器(嵌入在Visual Studio中),这是所有的需要。对于IIS,您还需要告诉IIS如何处理这些URL(因为服务器首先分析请求以决定将它发送到哪里 - 包括是否将其发送到ASP.NET或其他扩展)。
- 打开:IIS管理器 - >
- 部分:网站 - >
- 右键点击你的网站 - >
- 选项:属性 - >
- 标签:首页Directoy - >
- 按钮:[Configuration ...] - >
- Tab:映射 - >
- 节:“通配符应用程序映射(实现顺序) :“ - >
- Button:[Insert ...] - >
- 可执行文件:“C:\ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ aspnet_isapi.dll”(或您的处理程序使用的任何版本的.NET运行时) - >
- 取消选中“文件存在” - >
- 按钮:[OK]
现在IIS和ASP.NET都知道如何对付你的URL。
上面的方法意味着当请求静态文件时,ASP.NET实际上提供的是文件而不是IIS--这会导致一些缺点(讨论here)。通过将目录切换到应用程序(在IIS管理器中),删除通配符映射语句(上面添加的)并将其从应用程序切换回来,可以覆盖此行为(从静态目录中禁用通配符映射)。 Voilà - 静态文件由IIS处理而不会纠缠你的ASP.NET。
你能解释“我不会使用HTTP处理程序”。据我所知,HTTP处理程序比普通的ASPX页面提供更好的性能,并且我没有看到HTTP处理程序方式的任何缺点。 – 2011-01-22 01:31:44