示例#1
0
        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";
        }
示例#2
0
        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;
        }
示例#3
0
 protected virtual void OnResponseHeadersReading(ResponseHeadersReadingEventArgs e)
 {
 }