본문으로 건너뛰기

C# 함수 디버깅하기

function 모듈은 Roslyn으로 C# 함수 계약을 컴파일하고 실행합니다. 기본 예제는 소스 저장소의 2.Modules/function/Contracts/function/HDS/TST/CSF010/에 있습니다.

계약과 구현 확인하기​

function/HDS/TST/CSF010/
├─ featureMeta.json
└─ featureMain.cs

featureMeta.json은 ApplicationID=HDS, ProjectID=TST, TransactionID=CSF010, LanguageType=csharp과 실행 명령 GF01을 선언합니다. 입력 파라미터는 ServerDate, ServerName입니다. featureMain.cs의 HDS.Function.TST.CSF010.GF01이 이 값을 읽어 DataSet을 반환합니다.

string serverDate = dynamicParameters.Value("ServerDate").ToStringSafe();
string serverName = dynamicParameters.Value("ServerName").ToStringSafe();

폴더 방식 계약은 기본적으로 featureMeta.json, featureMain.cs를 함께 배치합니다. 실행 경로는 배포본의 contracts/function/HDS/TST/CSF010/이며, function/module.json의 ContractBasePath 설정을 먼저 확인하세요.

호스트에서 디버깅하기​

  1. ack 프로젝트를 시작 프로젝트로 설정하고 wwwroot, transact, function 모듈을 로드합니다.
  2. 실행 중인 배포본의 계약 파일이 수정한 원본과 같은지 확인합니다. 소스 계약은 모듈 빌드와 시작 시 설정에 따라 실행 폴더로 복사됩니다.
  3. function/ModuleInitializer.cs, function/Areas/function/Controllers/ExecutionController.cs, function/Extensions/FunctionMapper.cs, function/DataClient/FunctionClient.cs에서 계약 검색과 실행 경로를 확인합니다.
  4. 기본 화면 계약을 배포했다면 /view/TST/CSF010.html에서 호출합니다. 화면의 거래 계약과 함수 메타데이터의 기능 ID·입력 이름이 일치해야 합니다.
  5. 응답과 function/module.json의 ModuleLogFilePath 로그를 확인합니다. 동적 함수의 중단점이 바인딩되지 않으면 호스트 실행 경로의 중단점과 로그로 입력·컴파일 오류부터 확인합니다.

함수 파일의 자동 갱신은 EnableFileWatching과 WatchFileNamePatterns 설정에 따릅니다. 단일 파일 .fnc 계약을 사용하는 경우에도 명령 ID와 입출력 매핑은 호출 거래와 일치해야 합니다.

자세한 계약 구조는 function 모듈, 거래 연결은 거래 호출을 참고하세요.