Exemplo n.º 1
0
        public async Task RouteAsync(RouteContext context)
        {
            var path = context.HttpContext.Request.Path.ToString().TrimStart('/').TrimEnd('/');

            // root
            if (path == string.Empty && _opts.RootViewName != null)
            {
                path = _opts.RootViewName;
            }

            if (!path.Contains(".")) // if path doesn't have an extension, we want to probe it for being a page
            {
                var filePath = Path.Combine(_hostingEnvironment.ContentRootPath, _opts.ViewsFolderName, path + ".cshtml");
                var fileInfo = _fileProviderAccessor.FileProvider.GetFileInfo(filePath);
                if (fileInfo == null)
                {
                    context.HttpContext.Response.StatusCode = 404;
                    return;
                }

                var content = await _renderer.RenderViewToString(path);

                var contentBytes = Encoding.UTF8.GetBytes(content);

                context.HttpContext.Response.ContentType = "text/html";
                context.HttpContext.Response.Headers["Content-Length"] = contentBytes.Length.ToString();
                await context.HttpContext.Response.WriteAsync(content);
            }
        }
Exemplo n.º 2
0
        public async Task RouteAsync(RouteContext context)
        {
            var path = context.HttpContext.Request.Path.ToString().TrimStart('/').TrimEnd('/');

            // root
            if (path == string.Empty && _opts.RootViewName != null)
            {
                path = _opts.RootViewName;
            }

            if (!path.Contains(".")) // if path doesn't have an extension, we want to probe it for being a page
            {
                var filePath = Path.Combine(_hostingEnvironment.ContentRootPath, _opts.ViewsFolderName, path + ".cshtml");
                if (!File.Exists(filePath))
                {
                    context.HttpContext.Response.StatusCode = 404;
                    return;
                }

                var contents = _renderer.RenderViewToString(path);
                await context.HttpContext.Response.WriteAsync(contents);
            }
        }