// Entry point for ASP.NET public IHttpHandler GetHandler(HttpContext context, string requestType, string url, string pathTranslated) { DebugLastHandlerArgs = requestType + "|" + url + "|" + pathTranslated; var httpReq = new HttpRequestWrapper(pathTranslated, context.Request); foreach (var rawHttpHandler in RawHttpHandlers) { var reqInfo = rawHttpHandler(httpReq); if (reqInfo != null) return reqInfo; } var mode = _endpointHost.Config.ServiceStackHandlerFactoryPath; var pathInfo = context.Request.GetPathInfo(); //WebDev Server auto requests '/default.aspx' so recorrect path to different default document if (mode == null && (url == "/default.aspx" || url == "/Default.aspx")) pathInfo = "/"; //Default Request / if (string.IsNullOrEmpty(pathInfo) || pathInfo == "/") { //Exception calling context.Request.Url on Apache+mod_mono var absoluteUrl = Env.IsMono ? url.ToParentPath() : context.Request.GetApplicationUrl(); if (ApplicationBaseUrl == null) SetApplicationBaseUrl(absoluteUrl); //e.g. CatchAllHandler to Process Markdown files var catchAllHandler = GetCatchAllHandlerIfAny(httpReq.HttpMethod, pathInfo, httpReq.GetPhysicalPath()); if (catchAllHandler != null) return catchAllHandler; return ServeDefaultHandler ? DefaultHttpHandler : NonRootModeDefaultHttpHandler; } if (mode != null && pathInfo.EndsWith(mode)) { var requestPath = context.Request.Path.ToLower(); if (requestPath == "/" + mode || requestPath == mode || requestPath == mode + "/") { if (context.Request.PhysicalPath != WebHostPhysicalPath || !File.Exists(Path.Combine(context.Request.PhysicalPath, DefaultRootFileName ?? ""))) { return new IndexPageHttpHandler(); } } var okToServe = ShouldAllow(context.Request.FilePath); return okToServe ? DefaultHttpHandler : ForbiddenHttpHandler; } return GetHandlerForPathInfo( context.Request.HttpMethod, pathInfo, context.Request.FilePath, pathTranslated) ?? NotFoundHttpHandler; }
// Entry point for ASP.NET public IHttpHandler GetHandler(HttpContext context, string requestType, string url, string pathTranslated) { DebugLastHandlerArgs = requestType + "|" + url + "|" + pathTranslated; var httpReq = new HttpRequestWrapper(pathTranslated, context.Request); foreach (var rawHttpHandler in RawHttpHandlers) { var reqInfo = rawHttpHandler(httpReq); if (reqInfo != null) { return(reqInfo); } } var mode = EndpointHost.Config.ServiceStackHandlerFactoryPath; var pathInfo = context.Request.GetPathInfo(); //WebDev Server auto requests '/default.aspx' so recorrect path to different default document if (mode == null && (url == "/default.aspx" || url == "/Default.aspx")) { pathInfo = "/"; } //Default Request / if (string.IsNullOrEmpty(pathInfo) || pathInfo == "/") { //Exception calling context.Request.Url on Apache+mod_mono var absoluteUrl = Env.IsMono ? url.ToParentPath() : context.Request.GetApplicationUrl(); if (ApplicationBaseUrl == null) { SetApplicationBaseUrl(absoluteUrl); } //e.g. CatchAllHandler to Process Markdown files var catchAllHandler = GetCatchAllHandlerIfAny(httpReq.HttpMethod, pathInfo, httpReq.GetPhysicalPath()); if (catchAllHandler != null) { return(catchAllHandler); } return(ServeDefaultHandler ? DefaultHttpHandler : NonRootModeDefaultHttpHandler); } if (mode != null && pathInfo.EndsWith(mode)) { var requestPath = context.Request.Path.ToLower(); if (requestPath == "/" + mode || requestPath == mode || requestPath == mode + "/") { if (context.Request.PhysicalPath != WebHostPhysicalPath || !File.Exists(Path.Combine(context.Request.PhysicalPath, DefaultRootFileName ?? ""))) { return(new IndexPageHttpHandler()); } } var okToServe = ShouldAllow(context.Request.FilePath); return(okToServe ? DefaultHttpHandler : ForbiddenHttpHandler); } return(GetHandlerForPathInfo( context.Request.HttpMethod, pathInfo, context.Request.FilePath, pathTranslated) ?? NotFoundHttpHandler); }