작업 프로세스 예제
1. 이니시스 결제모듈을 ASP.NET과 연동한다.
2. 결제 후 클라이언트에게 보고서를 전송한다.
- 결제완료
- 결제 코드와 결제모드에 따른 결과값 POST로 aspx페이지가 전송 받음
- 결과값받은 aspx페이지에서 데이터를 가공하여 MailReport.aspx 에게 GET값으로 던져줌. (SKIN 구조상)
- MailReport.aspx에 가공된 데이터를 써서 HTML로 구운뒤 메일Body에 첨부하여 전송.
작업 프로세스 예외상황
1. 인코딩 문제
- 이니시스는 EUC-KR만 지원한다.
- 작업된 ASP.NET은 UTF-8로 작업이 되어있고 결제모듈때문에 인코딩을 변경하기에 위험부담이 큰 상황이다.
- 이니시스 서버측에서 별다른 UrlEncoding없이 직격으로 한글데이터 날림.
우선 이 문제를 해결하기 위해 Request.ContentEncoding에 직접 System Encoding을 강제 설정도 해보고 Byte로 읽어서 Encoding을 변경하여 다시 String으로 변환하는 방법도 써봤지만 이미 RequestEncoding에서 충돌이나 깨지고 들어온 데이터라 소용이 없었습니다.
할일은 산더미인데 인코딩 문제로 애를 썩다가 여친님에게 꼬라지내서 이별을 통보받고 혼자 소주먹으면서 1박 2일 보다가 콘프로스트가 허파에 걸리는 순간 머리속을 희미하게 지나간 해결책이 하나 있었습니다.
초기에 이니시스쪽에서 데이터 받는 녀석만 Globalization 설정을 개별적으로 주는 방법입니다.
미친듯이 MSDN을 털었고 먼지는 나왔습니다.
관련주소 : http://msdn.microsoft.com/en-us/library/ms178693.aspx
해결 프로세스
1. 이니시스쪽에서 데이터를 받는 파일만 Globalization 인코딩 설정을 따로 준다.
2. 이 후 깨지지 않고 받은 데이터를 System.Text.Encoding.Convert() 를 이용하여 컨버팅 한 뒤 UrlEncoding 한다.
3. MailReport.aspx파일에서 인코딩된값을 받아 디코딩 한 후 메일Body에 첨부한다.
1번 해당사항 소스
<location path="{가상파일경로 - 정규식 사용불가}" allowOverride="false">
<system.web>
<globalization requestEncoding="euc-kr"/>
</system.web>
</location>
파일 저장 인코딩
이니시스에서 값을 받는 aspx파일은 ANSI로 저장이 되어야하고 aspx.cs소스는 상관없습니다.
매뉴얼에보면 allowOverride의 속성은 해당 location구성 사항을 다른 클래스나 구성자가 변경하지 못하도록 Lock을 건다고 명시되어 있습니다.
allow를 false로하면 Lock상태이고 true로 하면 Unlock상태 입니다.
1. 이니시스 결제모듈을 ASP.NET과 연동한다.
2. 결제 후 클라이언트에게 보고서를 전송한다.
- 결제완료
- 결제 코드와 결제모드에 따른 결과값 POST로 aspx페이지가 전송 받음
- 결과값받은 aspx페이지에서 데이터를 가공하여 MailReport.aspx 에게 GET값으로 던져줌. (SKIN 구조상)
- MailReport.aspx에 가공된 데이터를 써서 HTML로 구운뒤 메일Body에 첨부하여 전송.
작업 프로세스 예외상황
1. 인코딩 문제
- 이니시스는 EUC-KR만 지원한다.
- 작업된 ASP.NET은 UTF-8로 작업이 되어있고 결제모듈때문에 인코딩을 변경하기에 위험부담이 큰 상황이다.
- 이니시스 서버측에서 별다른 UrlEncoding없이 직격으로 한글데이터 날림.
우선 이 문제를 해결하기 위해 Request.ContentEncoding에 직접 System Encoding을 강제 설정도 해보고 Byte로 읽어서 Encoding을 변경하여 다시 String으로 변환하는 방법도 써봤지만 이미 RequestEncoding에서 충돌이나 깨지고 들어온 데이터라 소용이 없었습니다.
할일은 산더미인데 인코딩 문제로 애를 썩다가 여친님에게 꼬라지내서 이별을 통보받고 혼자 소주먹으면서 1박 2일 보다가 콘프로스트가 허파에 걸리는 순간 머리속을 희미하게 지나간 해결책이 하나 있었습니다.
초기에 이니시스쪽에서 데이터 받는 녀석만 Globalization 설정을 개별적으로 주는 방법입니다.
미친듯이 MSDN을 털었고 먼지는 나왔습니다.
관련주소 : http://msdn.microsoft.com/en-us/library/ms178693.aspx
해결 프로세스
1. 이니시스쪽에서 데이터를 받는 파일만 Globalization 인코딩 설정을 따로 준다.
2. 이 후 깨지지 않고 받은 데이터를 System.Text.Encoding.Convert() 를 이용하여 컨버팅 한 뒤 UrlEncoding 한다.
3. MailReport.aspx파일에서 인코딩된값을 받아 디코딩 한 후 메일Body에 첨부한다.
1번 해당사항 소스
<location path="{가상파일경로 - 정규식 사용불가}" allowOverride="false">
<system.web>
<globalization requestEncoding="euc-kr"/>
</system.web>
</location>
파일 저장 인코딩
이니시스에서 값을 받는 aspx파일은 ANSI로 저장이 되어야하고 aspx.cs소스는 상관없습니다.
매뉴얼에보면 allowOverride의 속성은 해당 location구성 사항을 다른 클래스나 구성자가 변경하지 못하도록 Lock을 건다고 명시되어 있습니다.
allow를 false로하면 Lock상태이고 true로 하면 Unlock상태 입니다.
인코딩에 관하여서는 무언가가 정답이나 표준답안은 없습니다.
이 방법 말고도 다른 방법이 있을 수 있겠습니다만 이런식으로도 해결할 수 있다 라고 참고만 하시면 갠츈하겠습니다.
이 방법 말고도 다른 방법이 있을 수 있겠습니다만 이런식으로도 해결할 수 있다 라고 참고만 하시면 갠츈하겠습니다.