ASP.NET : AOP / 크로스 컷 문제에 대해 데이터를 표시하는 방법은 무엇입니까?

JackLThornton

이에 대한 관련 패턴을보고 싶지만 여기에 내 즉각적인 특정 문제가 있습니다.

나는이 요구 로그의 모든 항목이 로그 항목 결과 코드를 실행에 대한 책임이있는 엔티티 (사용자 이름 또는 프로세스 이름) 주석되도록 웹 응용 프로그램에서 로깅을 수정할 수 있습니다. 예를 들면 다음과 같습니다.

타임 스탬프 수준 loggerName 데이터베이스에서 민감한 개체가 삭제되었습니다.

당신은 얻을 것이다

타임 스탬프 수준 loggerName [ELLIOT.ALDERSON] 민감한 개체가 데이터베이스에서 삭제되었습니다.

또는

타임 스탬프 수준 loggerName [DAILY CRON JOB] 중요한 개체가 데이터베이스에서 삭제되었습니다.

작업을 수행 한 "사용자"(또는 프로세스)를 식별하는 것 외에도 사용자 인 경우 요청 자체에 대한 정보 (예 : IP 주소, 사용자 에이전트, 헤더 등)를 기록해야하는 요구 사항 도 있습니다 . 해당 데이터는 부속 로그에 기록 될 수 있으므로 기본 로그 자체를 읽을 수 있습니다.

Java에서 이것은 우리가 사용하는 HTTP 서버 (Tomcat)가 하나의 요청 / 하나의 스레드를 '보장'하여 사용자 정보와 요청 정보를 모두 스레드에 넣을 수 있기 때문에 로거에 대한 인터페이스를 수정 하지 않고 수행하는 것이 상대적으로 간단했습니다. 지역 변수. 내 코드는 어디에서나 "누가"호출했는지 파악하고 현재 사용자와 해당 스레드와 관련된 요청을 요청하여 요청 속성에 액세스 할 수 있습니다. 전체 애플리케이션을 통해 모든 메서드의 사용자 및 요청 변수를 전달할 필요가 없습니다. 즉, 내 코드가 로그에 기록 될 때 최소한으로 수정 된 로거 코드가 내 애플리케이션의 로거에 대한 단일 호출을 변경하지 않고도 원하는 출력을 생성 할 수 있습니다.

C # .NET에서는이 작업을 수행하는 방법을 모릅니다. IIS는 풀에서 스레드 재사용을 거의 보장하므로 스레드 로컬 변수를 사용하여 특정 메서드 호출과 관련된 사용자 및 요청을 식별합니다 (따라서 해당 메서드에 의해 수행 된 로거 호출에 연결되는 사용자 / 요청). 내가 읽은 모든 AOP 기사는 그렇게 많은 데이터가 아니라 행동 을 적용하는 것에 대해 다룹 니다.. 물론 컨트롤러 메서드 자체에서 세션을보고 정보를 요청할 수 있습니다. 그러나 컨트롤러는 메소드를 호출하는 메소드를 호출하는 메소드를 호출합니다. 광고 메스꺼움, 세션 및 요청이 비스타 터 인 모든 메소드에 추가 매개 변수로 전달되지 않는 한 해당 메소드는 가시성이 없습니다. 스택을 컨트롤러까지 걸어가거나 컨트롤러가 없다고 확신 할 때까지 기각했습니다. 그러나 스택 추적은 기본적으로 특정 프레임과 관련된 소스 코드를 식별 할뿐 스택의 실제 개체에 대한 액세스 권한을 부여하지 않습니다. 또한 로그 데이터를 포맷하고 쓰는 것만 큼 비싸지 만 스택을 걷는 데 드는 추가 비용은 약간 과도하게 보입니다).

교차 절단 우려 코드에 대해 임의의 컨텍스트 별 데이터 (이 경우 세션 및 요청 객체)에 대해 동일한 종류의 가시성을 허용하는 기술이 있습니까?

ddfra

현재 요청 데이터에 대한 정적 액세스가 필요한 경우 HttpContext.Current.Items를 사용할 수 있습니다. 그것은 문자열, 객체의 사전이며 모든 요청에 ​​따라 다릅니다. 스레드를 변경하면 (즉, async await를 사용하는 경우) 컨텍스트가 유지되고 올바른 데이터를 찾을 수 있습니다.

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

asp.net 코어에서 데이터보기 문제를 해결하는 방법은 무엇입니까?

분류에서Dev

Entity Framework를 통해 다 대다 테이블에 액세스하는 방법은 무엇입니까? asp.net

분류에서Dev

ASP.NET (VB) textbox.text를 SQL 데이터베이스에 삽입하는 방법은 무엇입니까?

분류에서Dev

ASP.NET MVC Razor에서 그룹화 된 데이터를 표시하는 방법은 무엇입니까?

분류에서Dev

ASP.NET MVC를 사용하여 데이터베이스에서 Excel 시트로 데이터를 내보내는 방법은 무엇입니까?

분류에서Dev

ASP.NET에서 AngularJS로 데이터를 전달하는 가장 좋은 방법은 무엇입니까?

분류에서Dev

데이터베이스에서 asp.net 웹폼으로 일부 데이터를 푸시하는 방법은 무엇입니까?

분류에서Dev

다음 문제 설명에 대해 영역 별 데이터를 표시하는 방법은 무엇입니까?

분류에서Dev

React 체크 박스와 동시에 데이터를 표시하는 대신 다른 데이터를 표시하는 방법은 무엇입니까?

분류에서Dev

asp.net에서 데이터 목록의 인덱스를 구성하는 방법은 무엇입니까?

분류에서Dev

Asp.net 코어에서 뷰 데이터를 부분 뷰로 전달하는 방법은 무엇입니까?

분류에서Dev

JQuery Ajax에서 ASP.NET 페이지로 데이터를 보내는 방법은 무엇입니까?

분류에서Dev

데이터베이스의 여러 이미지에서보기에 하나의 이미지 만 표시하는 방법은 무엇입니까? (ASP.NET MVC)

분류에서Dev

ASP.NET Core없이 컨트롤러에서 자바 스크립트로 Json 데이터를 보내는 방법은 무엇입니까?

분류에서Dev

tr 및 컷을 사용할 수없는 문제를 해결하는 방법은 무엇입니까?

분류에서Dev

asp.net에서 레코드를 동적으로 표시하는 방법은 무엇입니까?

분류에서Dev

단일 체크 박스 이벤트에서 모든 asp.net 체크 박스를 선택 / 선택 해제하는 방법은 무엇입니까?

분류에서Dev

Java를 통해 하드 디스크에 대한 데이터를 수집하는 방법은 무엇입니까?

분류에서Dev

하나의 뷰에서 뷰 생성과 인덱스 뷰 코드를 혼합했습니다. 그렇다면 asp.net MVC4의 해당 뷰로 데이터베이스에서 데이터를 검색하는 방법은 무엇입니까?

분류에서Dev

선반에있는 모든 데이터를 순서대로 표시하는 방법은 무엇입니까?

분류에서Dev

선택한 텍스트 상자의 선택적 정보에 대해서만 데이터베이스를 업데이트하는 방법은 무엇입니까? (asp.net C #)

분류에서Dev

C # ASP.NET MVC 프로그램에서 입력 된 데이터에 SQL Server 프로 시저 변수를 설정하는 방법은 무엇입니까?

분류에서Dev

Asp.Net 3.0 마이그레이션 DB 문제를 해결하는 방법은 무엇입니까?

분류에서Dev

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

분류에서Dev

ASP.NET MVC 및 Azure에서 데이터베이스에 연결하는 방법은 무엇입니까?

분류에서Dev

ASP.NET MVC에서 데이터베이스에 데이터를 전달하는 방법은 무엇입니까?

분류에서Dev

SQLite 데이터베이스에 대한 잘못된 경로를 해결하는 방법은 무엇입니까?

분류에서Dev

asp.net mvc4에서 매일 00:00에 데이터베이스를 업데이트하는 가장 좋은 방법은 무엇입니까?

분류에서Dev

초기 데이터에 대해 정렬 화살표를 표시하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    asp.net 코어에서 데이터보기 문제를 해결하는 방법은 무엇입니까?

  2. 2

    Entity Framework를 통해 다 대다 테이블에 액세스하는 방법은 무엇입니까? asp.net

  3. 3

    ASP.NET (VB) textbox.text를 SQL 데이터베이스에 삽입하는 방법은 무엇입니까?

  4. 4

    ASP.NET MVC Razor에서 그룹화 된 데이터를 표시하는 방법은 무엇입니까?

  5. 5

    ASP.NET MVC를 사용하여 데이터베이스에서 Excel 시트로 데이터를 내보내는 방법은 무엇입니까?

  6. 6

    ASP.NET에서 AngularJS로 데이터를 전달하는 가장 좋은 방법은 무엇입니까?

  7. 7

    데이터베이스에서 asp.net 웹폼으로 일부 데이터를 푸시하는 방법은 무엇입니까?

  8. 8

    다음 문제 설명에 대해 영역 별 데이터를 표시하는 방법은 무엇입니까?

  9. 9

    React 체크 박스와 동시에 데이터를 표시하는 대신 다른 데이터를 표시하는 방법은 무엇입니까?

  10. 10

    asp.net에서 데이터 목록의 인덱스를 구성하는 방법은 무엇입니까?

  11. 11

    Asp.net 코어에서 뷰 데이터를 부분 뷰로 전달하는 방법은 무엇입니까?

  12. 12

    JQuery Ajax에서 ASP.NET 페이지로 데이터를 보내는 방법은 무엇입니까?

  13. 13

    데이터베이스의 여러 이미지에서보기에 하나의 이미지 만 표시하는 방법은 무엇입니까? (ASP.NET MVC)

  14. 14

    ASP.NET Core없이 컨트롤러에서 자바 스크립트로 Json 데이터를 보내는 방법은 무엇입니까?

  15. 15

    tr 및 컷을 사용할 수없는 문제를 해결하는 방법은 무엇입니까?

  16. 16

    asp.net에서 레코드를 동적으로 표시하는 방법은 무엇입니까?

  17. 17

    단일 체크 박스 이벤트에서 모든 asp.net 체크 박스를 선택 / 선택 해제하는 방법은 무엇입니까?

  18. 18

    Java를 통해 하드 디스크에 대한 데이터를 수집하는 방법은 무엇입니까?

  19. 19

    하나의 뷰에서 뷰 생성과 인덱스 뷰 코드를 혼합했습니다. 그렇다면 asp.net MVC4의 해당 뷰로 데이터베이스에서 데이터를 검색하는 방법은 무엇입니까?

  20. 20

    선반에있는 모든 데이터를 순서대로 표시하는 방법은 무엇입니까?

  21. 21

    선택한 텍스트 상자의 선택적 정보에 대해서만 데이터베이스를 업데이트하는 방법은 무엇입니까? (asp.net C #)

  22. 22

    C # ASP.NET MVC 프로그램에서 입력 된 데이터에 SQL Server 프로 시저 변수를 설정하는 방법은 무엇입니까?

  23. 23

    Asp.Net 3.0 마이그레이션 DB 문제를 해결하는 방법은 무엇입니까?

  24. 24

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

  25. 25

    ASP.NET MVC 및 Azure에서 데이터베이스에 연결하는 방법은 무엇입니까?

  26. 26

    ASP.NET MVC에서 데이터베이스에 데이터를 전달하는 방법은 무엇입니까?

  27. 27

    SQLite 데이터베이스에 대한 잘못된 경로를 해결하는 방법은 무엇입니까?

  28. 28

    asp.net mvc4에서 매일 00:00에 데이터베이스를 업데이트하는 가장 좋은 방법은 무엇입니까?

  29. 29

    초기 데이터에 대해 정렬 화살표를 표시하는 방법은 무엇입니까?

뜨겁다태그

보관