<급>[질문] asp.net 웹 페이지에서 c++ dll import 질문입니다.

aavaaa의 이미지

xml을 이용한 통신을 위해 웹 페이지를 하나 만들었습니다.
xml을 웹 페이지로 보내면 이를 처리 후 다시 xml로 응답하는 방식입니다.(결국 xml은 문자열로 전달)

문제는 이렇게 받은 xml을 처리하는 DLL(c++) 파일을 웹 페이지에 임포팅 시키면서 발생했습니다.

어플에서 사용시 전혀 문제가 없었는데 웹 페이지에서는 "외부 구성 요소 오류"라며 처리 되지 않았기 때문입니다.
알아본 결과 COM 라이브러리 초기화 함수가 실패를 하고 있었고 이를 무시하고 진행하여 ADO 방식으로 DB 사용시
오류가 생기고 있었습니다.
어플에서 사용시 오류가 없었고 visual studio의 가상 iis에서도 문제가 없었는데 노트북의 iis 7.5에서는
이런 문제가 생기네요

그래서 COM 라이브러리를 사용하는 DLL 파일을 asp.net에서 import 하는 방법이 따로 있는지요?

아래는 현제 제가 임포팅하는 웹 페이지 코드 입니다.

 [DllImport(@"C:\inetpub\sman\msProc.dll", CallingConvention = CallingConvention.Cdecl)] 
    //[DllImport(@"C:\inetpub\sman\dlltest2.dll")]
    //[return: MarshalAs(UnmanagedType.BStr)]
    public static extern IntPtr procMain([MarshalAs(UnmanagedType.BStr)] string a);

함수를 보시면 아시겠지만 xml 데이터를 처리 후 결과 문자열의 포인터를 받고 이를 string으로 변환해 클라이
언트에 응답해 주게 됩니다.

벌써 몇일 째 해결을 못하고 있네요.

vs iis에서는 되고 노트북 iis에서는 안되는 것을 보면 설정을 잘 못 해 준것이라 생각해 이것 저것 만져봐도
결과는 똑같네요.

또, data 전달을 위해(일단 xml을 공유 메모리에 저장하고 다른 요청에서도 사용합니다.) 공유 메모리도 fileMap
형식으로 만들었는데 웹에서는 전혀 반응이 없네요. 역시 어플에서는 잘 됩니다.

고수님들 도와주소서~~~~

--급 우울한 인간이 ㅡㅡb

aavaaa의 이미지

c# 에서는 com을 자동적으로 초기화 하더군요.
그래서 DLL 에서 다시 초기화 하면 실패를 한 것입니다. ㅎㅎㅎㅎㅎ
것도 모르고 ㅡㅡ;;;;;;

그래서 DLL 파일에 먼저 CoUninitialize() 해주고 초기화 하니 이상없이 돌아갔습니다..

근데 웹 페이지에서 사용하는 DLL 에서 공유 메모리에 접근하지 못하는 문제는 아직 해결이 안됐네요 ㅋㅋ

글 남겨주세요`~~