不在asp.net应用程序中运行http处理程序

时间:2013-08-23 13:30:21

标签: c# asp.net iis httphandler

我想运行我的httphandler,当某个用户可以访问带有png,jpeg,gif等扩展的图像文件时。但是当我尝试路径时,我得到了404。我认为什么服务器尝试在磁盘上查找文件,但我想使用别名来访问我的处理程序中的文件以及更新的真实物理文件路径访问权限。
示例配置文件:

<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.0" />
    <httpHandlers>
      <add verb="GET,HEAD" path="*.jpg" type="Startup.Shop.ImageHandler, Startup.Shop" validate="false"/>
    </httpHandlers>
    <authorization>
      <allow users="*" />
    </authorization>
  </system.web>
  <system.webServer>
    <handlers>
      <add name="ImageHandlerfor JPG" path="*.jpg" verb="GET" type="Startup.Shop.ImageHandler, Startup.Shop" resourceType="Unspecified" />
      <add name="ImageHandler for GIF" path="*.gif" verb="GET" type="Startup.Shop.ImageHandler, Startup.Shop" resourceType="Unspecified" />
      <add name="ImageHandler for BMP" path="*.bmp" verb="GET" type="Startup.Shop.ImageHandler, Startup.Shop" resourceType="Unspecified" />
      <add name="ImageHandler for PNG" path="*.png" verb="GET" type="Startup.Shop.ImageHandler, Startup.Shop" resourceType="Unspecified" />
    </handlers>
  </system.webServer>
/configuration>

示例处理程序类:

 public class ImageHandler : IHttpHandler, IRouteHandler
    {

        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            context.Response.Write("Hello World");
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }

        public IHttpHandler GetHttpHandler(RequestContext requestContext)
        {
            return this;
        }
    }

还有更多 - iis服务器可配置为经典模式

1 个答案:

答案 0 :(得分:0)

如果你处于经典模式,那么IIS将不会被IIS调用,除非IIS知道应该映射的文件类型。在IIS控制面板中,您应该能够配置ASP.NET处理的文件类型。否则,它会假设文件类型是针对物理文件的,它在文件系统中找不到。