2 // System.Web.StaticFileHandler
5 // Gonzalo Paniagua Javier (gonzalo@ximian.com)
7 // (C) 2002 Ximian, Inc (http://www.ximian.com)
15 class StaticFileHandler : IHttpHandler
17 public void ProcessRequest (HttpContext context)
19 HttpRequest request = context.Request;
20 HttpResponse response = context.Response;
21 string fileName = request.PhysicalPath;
22 FileInfo fi = new FileInfo (fileName);
24 throw new HttpException (404, "File '" + fileName + "' does not exist");
26 if ((fi.Attributes & FileAttributes.Directory) != 0) {
27 response.Redirect (request.Path + '/');
31 string strHeader = request.Headers ["If-Modified-Since"];
33 if (strHeader != null) {
34 DateTime dtIfModifiedSince = DateTime.ParseExact (strHeader, "r", null);
35 DateTime ftime = fi.LastWriteTime.ToUniversalTime ();
36 if (ftime <= dtIfModifiedSince) {
37 response.StatusCode = 304;
44 DateTime lastWT = fi.LastWriteTime.ToUniversalTime ();
45 response.AddHeader ("Last-Modified", lastWT.ToString ("r"));
47 response.WriteFile (fileName);
48 response.ContentType = MimeTypes.GetMimeType (fileName);
49 } catch (Exception e) {
50 throw new HttpException (401, "Forbidden");
54 public bool IsReusable