특정 컨트롤러 작업에 대해 asp.net C #에서 기본 경로를 설정하는 방법은 무엇입니까?

Jseb

특정 경로를 사용하지 않도록 제한하려면 어떻게해야합니까?

내 startup.cs에는 두 개의 mapendpoint가 있습니다.

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllerRoute(
                    name: "botConfiguration",
                    pattern: "bot/{botID}/{controller=Home}/{action=Index}/{id?}"); 

                endpoints.MapControllerRoute(
                     name: "default",
                    pattern: "{controller=Home}/{action=Index}/{id?}");
            });

내 컨트롤러에서

        public IActionResult Setting(int botID)
        {

            //botConfigRepository.GetAll();
            return View();
        }

botID가 내 경로에 정의되어 있지 않으면이 작업을 호출 할 수 없거나 일종의 기본 페이지로 리디렉션됩니다.

이제 나는 내가 할 수 있다는 것을 안다.

if (botID == 0 ){
   return RedirectToAction("Index");
}

어떤 종류의 일이지만 모든 행동에 대해 이것을 작성하는 것은 일종의 고통스러운 소리입니다.

누수

물론 ASP.NET Core는 교차 절단 문제를 구현하는 여러 방법을 지원합니다. 원하는 방식에 따라 다르지만 다음과 같이 사용자 지정 미들웨어 델리게이트를 추가하는 것만 큼 간단 할 수 있습니다.

// In Startup.cs
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    // Placed before app.UseEndpoints()
    app.Use(async (ctx, next) => {
        if (!ctx.Request.Query.ContainsKey("botID") && !ctx.Request.Path.Value.Contains("Index"))
            ctx.Response.Redirect("Index");
        else
            await next();
    });
}

(두 번째 조건은 계단식 리디렉션을 방지하기위한 것입니다.)

미들웨어는 기본적으로 각 미들웨어가 제어 또는 단락을 통과 할 수있는 책임 구조의 체인 인 요청 처리 파이프 라인의 최상위 구성 부분입니다. ASP.NET의 자체 구성 요소는 인증 미들웨어 및 라우팅 미들웨어와 같은 미들웨어로 구현됩니다. 그리고 이것들이 내부에 추가 Startup.cs/Configure()되는 순서가 실행 순서를 결정합니다.

따라서 상대적으로 낮은 수준의 것을 달성하려는 경우 가장 깨끗한 방법은 종종 미들웨어를 사용하는 것입니다. 를 사용하여 적절한 미들웨어 클래스추가 할 수도 있습니다 app.UseMiddleware().

(주의해야 할 한 가지는 미들웨어에 싱글 톤 수명이 있으므로 요청 범위 서비스를 삽입하는 것이 문제가됩니다. 이 질문을 참조하십시오 .)

대체 솔루션 ActionFilter으로 누군가가 다음과 같이 언급 했듯이 동일한 결과를 얻기 위해 전역 등록 사용할 수 있습니다 .

public class MyActionFilter : IActionFilter
{
    public void OnActionExecuted(ActionExecutedContext context) {}

    public void OnActionExecuting(ActionExecutingContext ctx)
    {
        if (!ctx.HttpContext.Request.Query.ContainsKey("botID") && !ctx.HttpContext.Request.Path.Value.Contains("Index"))
        {
            ctx.Result = new RedirectResult("Index");
        }
    }
}

// Register it in Startup.ConfigureServices()
services.AddMvc(options => options.Filters.Add(new MyActionFilter()));

추가 요구 사항이있는 경우 언제든지 의견을 보내 주시면 해결해 드리겠습니다. :)

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

VS Code에서 ASP.NET Core의 기본 포트를 설정하는 방법은 무엇입니까?

분류에서Dev

ASP.NET Core에서 컨트롤러를 일시적 대신 범위 지정 또는 단일 항목으로 만드는 방법은 무엇입니까?

분류에서Dev

Objective C를 사용하여 특정 뷰 컨트롤러에 대해 별도의 방향을 만드는 방법은 무엇입니까?

분류에서Dev

컨트롤러의 특정 클래스에 대해 최대 깊이를 설정하는 방법은 무엇입니까?

분류에서Dev

Swagger UI를 통해 ASP.net C # 컨트롤러를 통해 작은 파일을 업로드하는 방법은 무엇입니까?

분류에서Dev

내 ASP NET Core 3.1 컨트롤러의 특정 작업에 대한 기본 인증을 어떻게 설정합니까?

분류에서Dev

서비스 컨트롤러에 정의 된 'isSubmitted ()-method'를 기본 컨트롤러에로드하는 방법은 무엇입니까?

분류에서Dev

asp.net mvc의 컨트롤러에서 특정 사용자에게 작업 방법에 대한 액세스를 제공하는 방법

분류에서Dev

모든 요청에 대해 HTTP 클라이언트 용 .NET Core 3.1로 기본 프록시를 설정하는 방법은 무엇입니까?

분류에서Dev

C # Asp.Net MVC 컨트롤러에 Angular POST를 만드는 방법은 무엇입니까?

분류에서Dev

odata 컨트롤러에서 사용자 지정 작업에 대해 HTTP 404를 방지하는 방법은 무엇입니까?

분류에서Dev

Spring mvc의 컨트롤러에서 기본 핸들러 메서드를 설정하는 방법은 무엇입니까?

분류에서Dev

Spring mvc의 컨트롤러에서 기본 핸들러 메서드를 설정하는 방법은 무엇입니까?

분류에서Dev

VS2013에서 새 프로젝트에 대한 기본 .NET 프레임 워크를 설정하는 방법은 무엇입니까?

분류에서Dev

조건에 따라 초기 뷰 컨트롤러를 설정하는 방법은 무엇입니까?

분류에서Dev

asp.net mvc의 영역에서 컨트롤러에서 작업에 대한 작업 링크를 정의하는 방법

분류에서Dev

Blazor 앱에서 ASP.NET Core MVC 컨트롤러로 이동하는 방법은 무엇입니까?

분류에서Dev

ASP.Net MVC 컨트롤러에서 JSON 데이터를 게시하는 방법은 무엇입니까?

분류에서Dev

asp.net에서 캘린더 컨트롤의 기본 날짜를 설정하는 방법

분류에서Dev

스토리 보드의 하위보기에 대한 컨트롤러를 설정하는 방법은 무엇입니까?

분류에서Dev

ASP.NET Core에서 기본 영역을 설정하는 방법은 무엇입니까?

분류에서Dev

각도보기에서 asp.net mvc 컨트롤러로 ID를 전달하는 방법은 무엇입니까?

분류에서Dev

Servicestack을 사용하여 OpenAPI에 대한 기본 경로를 설정하는 방법은 무엇입니까?

분류에서Dev

asp.net mvc 6에서 기본 컨트롤러를 추가하는 방법

분류에서Dev

Windows에서 "ls"에 대한 기본 --color 기본 설정을 변경하는 방법은 무엇입니까?

분류에서Dev

ASP.Net MVC에서 호출 된 모든 컨트롤러 및 작업 메서드를 보는 방법은 무엇입니까?

분류에서Dev

RichTextBox 컨트롤에서 특정 컬러 텍스트를 선택하는 방법은 무엇입니까?

분류에서Dev

특정 작업을 수행하기 위해 Excel 시트에서 특정 단추를 할당하는 방법은 무엇입니까?

분류에서Dev

사용자 지정 컨트롤러 작업에서 기본 DNN 팝업을 표시하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    VS Code에서 ASP.NET Core의 기본 포트를 설정하는 방법은 무엇입니까?

  2. 2

    ASP.NET Core에서 컨트롤러를 일시적 대신 범위 지정 또는 단일 항목으로 만드는 방법은 무엇입니까?

  3. 3

    Objective C를 사용하여 특정 뷰 컨트롤러에 대해 별도의 방향을 만드는 방법은 무엇입니까?

  4. 4

    컨트롤러의 특정 클래스에 대해 최대 깊이를 설정하는 방법은 무엇입니까?

  5. 5

    Swagger UI를 통해 ASP.net C # 컨트롤러를 통해 작은 파일을 업로드하는 방법은 무엇입니까?

  6. 6

    내 ASP NET Core 3.1 컨트롤러의 특정 작업에 대한 기본 인증을 어떻게 설정합니까?

  7. 7

    서비스 컨트롤러에 정의 된 'isSubmitted ()-method'를 기본 컨트롤러에로드하는 방법은 무엇입니까?

  8. 8

    asp.net mvc의 컨트롤러에서 특정 사용자에게 작업 방법에 대한 액세스를 제공하는 방법

  9. 9

    모든 요청에 대해 HTTP 클라이언트 용 .NET Core 3.1로 기본 프록시를 설정하는 방법은 무엇입니까?

  10. 10

    C # Asp.Net MVC 컨트롤러에 Angular POST를 만드는 방법은 무엇입니까?

  11. 11

    odata 컨트롤러에서 사용자 지정 작업에 대해 HTTP 404를 방지하는 방법은 무엇입니까?

  12. 12

    Spring mvc의 컨트롤러에서 기본 핸들러 메서드를 설정하는 방법은 무엇입니까?

  13. 13

    Spring mvc의 컨트롤러에서 기본 핸들러 메서드를 설정하는 방법은 무엇입니까?

  14. 14

    VS2013에서 새 프로젝트에 대한 기본 .NET 프레임 워크를 설정하는 방법은 무엇입니까?

  15. 15

    조건에 따라 초기 뷰 컨트롤러를 설정하는 방법은 무엇입니까?

  16. 16

    asp.net mvc의 영역에서 컨트롤러에서 작업에 대한 작업 링크를 정의하는 방법

  17. 17

    Blazor 앱에서 ASP.NET Core MVC 컨트롤러로 이동하는 방법은 무엇입니까?

  18. 18

    ASP.Net MVC 컨트롤러에서 JSON 데이터를 게시하는 방법은 무엇입니까?

  19. 19

    asp.net에서 캘린더 컨트롤의 기본 날짜를 설정하는 방법

  20. 20

    스토리 보드의 하위보기에 대한 컨트롤러를 설정하는 방법은 무엇입니까?

  21. 21

    ASP.NET Core에서 기본 영역을 설정하는 방법은 무엇입니까?

  22. 22

    각도보기에서 asp.net mvc 컨트롤러로 ID를 전달하는 방법은 무엇입니까?

  23. 23

    Servicestack을 사용하여 OpenAPI에 대한 기본 경로를 설정하는 방법은 무엇입니까?

  24. 24

    asp.net mvc 6에서 기본 컨트롤러를 추가하는 방법

  25. 25

    Windows에서 "ls"에 대한 기본 --color 기본 설정을 변경하는 방법은 무엇입니까?

  26. 26

    ASP.Net MVC에서 호출 된 모든 컨트롤러 및 작업 메서드를 보는 방법은 무엇입니까?

  27. 27

    RichTextBox 컨트롤에서 특정 컬러 텍스트를 선택하는 방법은 무엇입니까?

  28. 28

    특정 작업을 수행하기 위해 Excel 시트에서 특정 단추를 할당하는 방법은 무엇입니까?

  29. 29

    사용자 지정 컨트롤러 작업에서 기본 DNN 팝업을 표시하는 방법은 무엇입니까?

뜨겁다태그

보관