public void OnResponseHeadersReading(ResponseHeadersReadingEventArgs e) { var uri = new Uri(_request.Url, UriKind.RelativeOrAbsolute); var path = uri.LocalPath.TrimStart('/'); if (!File.Exists(path)) { e.Response.MimeType = "text/plain"; e.Response.StatusCode = 404; e.Response.StatusText = "Resource not found."; return; } try { _fileStream = File.Open(path, FileMode.Open, FileAccess.Read, FileShare.Read); } catch (IOException ex) { e.Response.MimeType = "text/plain"; e.Response.StatusCode = 500; e.Response.StatusText = string.Format("Access denied. {0}", ex); } catch (Exception ex) { e.Response.MimeType = "text/plain"; e.Response.StatusCode = 505; e.Response.StatusText = string.Format("Internal error. {0}", ex); } var extension = uri.Segments.Last().ToFileExtension(); e.Response.MimeType = MimeMapper.ResolveFromExtension(extension); e.Response.StatusCode = 200; e.Response.StatusText = "OK"; }
private void GetResponseHeaders(IntPtr self, IntPtr response, ref long responselength, IntPtr redirecturl) { var e = new ResponseHeadersReadingEventArgs { Response = Response.FromHandle(response) }; OnResponseHeadersReading(e); if (e.RedirectUri != null) { StringUtf16.WriteString(e.RedirectUri.AbsoluteUri, redirecturl); } // We will pass the data as a stream, its length will not be determined at this point. responselength = -1; }
protected virtual void OnResponseHeadersReading(ResponseHeadersReadingEventArgs e) { }