コード例 #1
0
        public async Task Invoke(HttpContext httpContext)
        {
            HttpStatusCode httpStatusCode = HttpStatusCode.Unauthorized;
            StatusCode     statusCode     = StatusCode.UnAuthorize;
            string         message        = "";

            try
            {
                await next(httpContext);
            }
            catch (FilmstanUnAccessException ex)
            {
                message    = ex.Message;
                statusCode = ex.StatusCode;
                SetUnAccessStatusCode();
                await ReponseWriteAsync();
            }
            catch (FilmstanUnAuthourizeException ex)
            {
                message    = ex.Message;
                statusCode = ex.StatusCode;
                SetUnAthurizedStatusCode();
                await ReponseWriteAsync();
            }
            catch (FilmstanException ex)
            {
                message    = ex.Message;
                statusCode = ex.StatusCode;
                await ReponseWriteAsync();
            }
            catch (Exception ex)
            {
                message = ex.Message;
                await ReponseWriteAsync();
            }
            async Task ReponseWriteAsync()
            {
                httpContext.Response.StatusCode  = (int)httpStatusCode;
                httpContext.Response.ContentType = "application/json";
                var result = new ReturnResult(false, statusCode, message);
                await httpContext.Response.WriteAsync(result.Serializer());
            }

            void SetUnAthurizedStatusCode()
            {
                httpStatusCode = HttpStatusCode.Unauthorized;
                statusCode     = StatusCode.UnAuthorize;
            }

            void SetUnAccessStatusCode()
            {
                httpStatusCode = HttpStatusCode.Forbidden;
                statusCode     = StatusCode.UnAccess;
            }
        }