Web.Config中的通用处理程序注册

Tar*_*rik 2 c# asp.net web-config httphandler

我在我的项目中添加了一个通用处理程序(ashx),但是我无法在web.config中看到它的注册并且它有效.怎么会 ?我的意思是不应该将visual studio添加为web.config中的http处理程序?或者是因为我没有覆盖任何预定义的处理程序,而是我专门调用它.

Sou*_*ter 6

通常,Asp.net中的通用处理程序旨在支持一些小任务,例如创建一些不需要Asp.net进程的缩略图.所以,您可以像调用一个简单的asp.net页面一样调用它,例如"www.somesite.com/Thumbnail.ashx?filename=abc.jpg".

顺便说一下,如果你想用一些URL映射这个处理程序,如下面的URL.

  • www.somesite.com/Thumbnail/abc.jpg
  • www.somesite.com/Thumbnail/dog.jpg
  • www.somesite.com/Thumbnail/cat.jpg

您需要使用一些URL路由,如Web表单路由(基于System.Routing)来映射它.因此,您可以使用以下代码执行上述示例.

public static void RegisterRoutes(RouteCollection routes)
{
  routes.Map("Thumbnail", "Thumbnail/{filename}").To("~/Thumbnail.ashx");
}
Run Code Online (Sandbox Code Playgroud)

有关Web窗体映射的更多信息,请参阅Phil Haack 使用Web窗体路由.

但是,如果您需要创建一些Http处理程序,它可以为您的应用程序处理一些指定文件类型,如JavaScript文件处理程序.您必须创建继承自IHttpHandler的类.之后,您必须在web.config文件中注册它,以指定由此处理程序处理的文件类型.请查看ASP.NET中的HTTP处理程序和HTTP模块 By Mansoor Ahmed Siddiqui

PS.如果使用通用处理程序在web.config文件中注册,则需要创建SomeHandler.ashx和SomeHandler.ashx.cs这两个文件.创建一些简单的文件处理程序非常复杂.另一方面,您只能创建一个继承自IHttpHandler类的cs文件来执行相同的操作.