거래 오류 메시지
거래가 실패했을 때 응답의 ExceptionText나 브라우저 콘솔에 나온 문구로 원인을 찾습니다. 증상에서 시작하는 진단 순서는 증상별 문제 해결, 계약 항목은 거래 계약 명세, 모듈 설정은 transact 모듈을 보세요.
HTTP 상태가 200이어도 응답 본문에 ExceptionText가 있을 수 있습니다. 문구 앞부분의 'ApplicationID|ProjectID|TransactionID|ServiceID' 값을 계약과 대조하는 것이 가장 빠릅니다.
문구는 transact 모듈 소스(TransactionController, TransactClient)와 화면 로더(syn.js) 기준입니다. 서버 SecurityHardening.SanitizeErrorText가 true이면 클라이언트에는 요청을 처리할 수 없습니다. 참조 ID: {GlobalID}만 돌아가고 원본 문구는 서버 로그(Information)에 남습니다. 이 경우 응답에서 아래 문구를 검색할 수 없으므로 참조 ID(GlobalID)로 서버 로그를 찾으세요.
서버: 요청 검증
| 문구 | 발생 조건 | 확인할 설정 |
|---|---|---|
요청 정보 확인 필요 | 요청 본문을 읽지 못함 | 요청 전문 형식 |
요청 한도 초과 | SecurityHardening.RateLimit가 한도를 넘고 Mode가 Enforce. 다른 모드는 로그만 남깁니다 | SecurityHardening.RateLimit |
요청 경로 수 한도 초과(… > …), 입력 데이터맵 수 한도 초과(… > …) | 요청의 Routes 수나 입력 데이터맵 수가 MaxRoutes, MaxDataMapSetCount를 넘음 (각 기본값 0은 무제한) | SecurityHardening |
잘못된 요청 | IsValidationRequest가 true(기본 false)일 때, BypassGlobalIDTransactions에 없는 거래가 System.Routes가 비었거나 GlobalID가 분산 캐시에 시딩되어 있지 않음. 시딩된 GlobalID는 한 번 쓰면 지워집니다 | IsValidationRequest, BypassGlobalIDTransactions |
요청 만료 | 같은 검증 중 요청 시각(RequestTick)이 180초를 넘음 | 클라이언트·서버 시각 |
중복 요청 | IsValidationGlobalID가 true이고 같은 GlobalID를 이미 처리함 | IsValidationGlobalID |
잘못된 입력 전문 | Action, Kind, System, Transaction, PayLoad, Interface 중 하나가 비어 있음 | 요청 전문 형식 |
입력 데이터 맵 정보 확인 필요 | 입력 데이터맵을 역직렬화하지 못함 | 요청 PayLoad |
데이터 포맷 '…' 확인 필요 | dataFormat이 J·T가 아님 (비어 있으면 J) | 요청 dataFormat |
'…' 환경정보 구분코드 허용 안됨 | 요청 environment가 AvailableEnvironment에 없거나 목록이 비어 있음 | AvailableEnvironment |
입력 전문 '…' 환경정보 구분코드 확인 필요 | 요청 environment가 비어 있음 | 요청 environment |
애플리케이션 ID: '…', 프로젝트 ID: … 요청 가능 거래 매핑 정보 확인 필요 | AllowRequestTransactions에 *나 해당 애플리케이션·프로젝트가 없음 | AllowRequestTransactions |
제한된 거래 요청입니다. | 테넌트 앱 경로(Referer)에서 온 호출인데 서비스의 CommandType이 AllowTenantTransactionCommands에 없음. 코드 기본값은 빈 목록이고 배포 module.json은 ["D","G"]입니다 | AllowTenantTransactionCommands |
서버: 계약 조회
| 문구 | 발생 조건 | 확인할 것 |
|---|---|---|
ProgramID '…', BusinessID '…', TransactionID '…' 거래 Transaction 입력 전문 확인 필요 | 서버에 해당 거래 계약이 없음 | 파일 위치와 이름, ApplicationID·ProjectID·TransactionID, 배포·refresh |
FunctionID '…' 거래 매핑 정보 확인 필요 | 계약에 ServiceID가 없음 | 오타·대소문자 |
FunctionID '…' 거래 매핑 중복 정보 확인 필요 | 같은 ServiceID가 둘 이상 | 계약의 ServiceID 중복 |
ScreenID '…' 요청 가능화면 거래 매핑 정보 확인 필요 | 호출 화면이 서비스의 AccessScreenID(생략 시 자기 TransactionID)에 없음 | 다른 화면·팝업·공용 거래가 호출하면 AccessScreenID에 화면 ID 추가 |
거래 라우팅 경로 확인 필요 | 서비스의 RoutingCommandUri가 http를 포함하지 않음 | RoutingCommandUri, 라우팅 설정 |
ReturnType 확인 필요 | 지원하지 않는 ReturnType | 서비스의 ReturnType |
PSH 동시 처리 한도 초과 | SecurityHardening.MaxConcurrentPushTasks 초과 (PSH 거래) | MaxConcurrentPushTasks |