Microsoft MVP성태의 닷넷 이야기
원격지 서버에서 COM+ 호출이 되지 않습니다. [링크 복사], [링크+제목 복사]
조회: 15767
글쓴 사람
황은영 (enyhwang at kcb4u.com)
홈페이지
첨부 파일
 

안녕하세요. 닷넷은 완전 초보입니다

어찌하다보니 닷넷프로그램 유지보수를 하게 되었습니다.
그런데 빌드를 할때마다 문제가 발생해서 어찌해야할지 모르겠습니다.

환경 : Windows Server 2008 R2 64bit
       .NET framework 3.5
       Visual Studio 2010 Pro
개발언어 c#

서버 구성 : Web Server ( IIS 7.0 )
            COM+ Server

솔루션구성 : test (aspx 쪽 코드비하인드 .cs 들)
             test.biz (원격지에서 호출되는 비즈니스 로직들)
             test.da (odp.net 사용. DB 관련 인터페이스)

이렇게 구성되어 있습니다.

지난번에 제가 빌드해서 등록한 방법은

1. 솔루션 전체 빌드. COM+ 서버쪽에 IIS 띄워서 로컬로 이상유무 확인
2. COM+ 서버쪽 구성관리자에서 test.biz 를 "내보내기" 로 proxy 생성 msi, cab 파일로 웹서버에 설치
   서버프로그램에 사용자 ID와 비번 고정해서 넣음 (웹서버도 동일한 ID, 비전사용함)
3. web 쪽 bin 디렉토리에 test.dll, test.biz.dll, test.da.dll 파일 모두 복사해 넣기
4. web 쪽 구성관리자에서 proxy 의 속성에 원격지서버를 IP 로 넣음

이렇게 해서 잘 쓰고 있었습니다.

이번에 화면쪽 일부를 또 수정해야되서 test 만 빌드를 하다가 실수로 솔루션 전체 빌드했는데
그때부터 갑자기 오류가 뜨기 시작했습니다. 그래서 혹시나 DLL 이 달라져 그런가보다 싶어서
regsvcs 로 삭제하고 등록을 다시 했습니다. 소스는 한줄도 안고쳤는데도
원래 있던 구성요소가 없다면서 등록 오류가 발생했습니다.
그래서 빌드 버전을 높이고 빌드했더니 등록은 정상으로 되었습니다.
( 왜 빌드만 새로 했는데도 오류가 날까요... 이것도 궁금합니다만 일단 이건 버전 높여서 해결된다면 그나마 다행이구요. )

1~4까지 동일하게 진행하고 화면에서 호출했더니 아래와 같은 오류가 발생했습니다.
구글링 열심히 해봐도 이런 케이스에 대해서 설명이 명확치가 않네요. 아는만큼 보이는지라 있는데도 못찾는건지

전에 개발해주셨던 분이 전역어셈블리 지우는거 가르쳐주셔서 그거도 확인해봤는데 그거도 아닌거 같고
regasm.exe /u 로 지우고 tbl 파일도 다 찾아서 지우고 temp asp.net 쪽 디렉토리도 몽땅 다 지우고

이제는 어찌해야할지 모르겠습니다.
로직 서너줄 고치고 빌드할때마다 문제가 발생하니 죽겠습니다.

꼭 도와주세요. T.T 지난번에 해결할때도 몇주가 걸렸는데

===================================================


'/' 응용 프로그램에 서버 오류가 있습니다.
--------------------------------------------------------------------------------

RPC 서버를 사용할 수 없습니다. (예외가 발생한 HRESULT: 0x800706BA)
설명: 현재 웹 요청을 실행하는 동안 처리되지 않은 예외가 발생했습니다. 스택 추적을 검토하여 발생한 오류 및 코드에서 오류가 발생한 위치에 대한 자세한 정보를 확인하십시오.

예외 정보: System.Runtime.InteropServices.COMException: RPC 서버를 사용할 수 없습니다. (예외가 발생한 HRESULT: 0x800706BA)

소스 오류:

현재 웹 요청을 실행하는 동안 처리되지 않은 예외가 생성되었습니다. 아래의 예외 스택 추적을 사용하여 예외의 원인 및 위치 정보를 확인할 수 있습니다.

스택 추적:


[COMException (0x800706ba): RPC 서버를 사용할 수 없습니다. (예외가 발생한 HRESULT: 0x800706BA)]
   System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32 errorCode, IntPtr errorInfo) +0
   System.EnterpriseServices.Thunk.Proxy.CoCreateObject(Type serverType, Boolean bQuerySCInfo, Boolean& bIsAnotherProcess, String& uri) +518
   System.EnterpriseServices.ServicedComponentProxyAttribute.CreateInstance(Type serverType) +159
   System.Runtime.Remoting.Activation.ActivationServices.IsCurrentContextOK(Type serverType, Object[] props, Boolean bNewObj) +7556164
   test.User.Login.BTlogin_Click(Object sender, EventArgs e) +110
   System.Web.UI.WebControls.LinkButton.OnClick(EventArgs e) +111
   System.Web.UI.WebControls.LinkButton.RaisePostBackEvent(String eventArgument) +79
   System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +175
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565

 


--------------------------------------------------------------------------------
버전 정보: Microsoft .NET Framework 버전:2.0.50727.4927; ASP.NET 버전:2.0.50727.4927












[최초 등록일: ]
[최종 수정일: 5/29/2013]


비밀번호

댓글 작성자
 



2013-05-29 07시55분
[ryujh] 안녕하세요.

오류로만 봐서는 COM+ 서버에 이상이 있는것 같습니다.

test.biz COM+ 컴포넌트가 멈춰있지는 않은지 보시거나 RPC 서버가 중지 되어있지 않은지 보셔야 할것 같습니다.

이것은 일반적인 방법이고


저의 방법이라면

test.biz 의 소스 중 DB 연결만 있다면

COM+ 를 사용하지 않도록 수정하여 매번 빌드시 걱정하지 않도록 하는 것입니다.

COM+ 의 프록시를 사용해본적이 없어서 더 말씀드릴 것이 없군요.

이상입니다.

[guest]
2013-05-29 09시01분
[손님2] COM+ 특성상 외부 노출 변수나 메소드가 바뀌는 경우 GUID가 바뀝니다.
추가 되는건 문제 없는데 변경 또는 삭제가 되는 경우에는 재등록을 해줘야 합니다.

예를 들어
public A(string aa, string bb) -> public A(string aa) 이런식으로 변경




[guest]
2013-05-29 09시31분
[황은영] 빠른 답글 너무 감사합니다. 정말 하소연할데도 없고 힘들었는데 T.T

COM+ 안쓸수 있는 방법이 있나요?
이미 개발된거에서 일부 수정이라 힘들겠지만 방법이 있다면 해보고싶어요.
다만 정책적으로 웹서버에서 DB 연결은 불가능합니다.
반드시 3tier 구조로 웹서버, AP 서버, DB 서버는 분리되어야 합니다.
IIS 를 쓰면서 이런 구조가 가능한가요?

COM+ 쪽 소스는 하나도 고치지 않았습니다.
aspx 코드비하인드쪽 .cs 파일들만 고쳤습니다.
GUID 는 안 바뀌었을거 같습니다.

컴파일만 새로 했는데 오류가 나니 어떻게 유지보수를 할지 너무 힘듭니다. T.T
--------------------------------------------------------------------------------

[guest]
2013-05-29 10시06분
[ryujh] 안녕하세요.

AP 서버에서 .NET Framework 설치와 IIS사용가능하다면

XML WebService (asmx) 구현후 웹메소드를 노출하고

웹서버에서 웹메소드의 프록시를 참조하여 가능할 것 같습니다. (웹참조)

웹서버와 AP서버간 (80,443)포트가 열려있어야 할 것이고,

COM+의 비즈니스 로직을 웹메소드에 다 구현해줘야 하겠습니다.

정말 가능한지는 소스와 환경에 달려있을 겁니다.

이상입니다.

[guest]
2013-05-30 12시01분
[황은영] 감사합니다. 그런 방법은 생각못했네요.
구조변경하는 부분은 시간을 들여서 알아보고 해야될거 같습니다.

일단 지금은 현재 구성에서 문제가 없게 해야될텐데 지금 올린 오류에 대해서는 방법이 없을까요?
코딩은 대여섯줄 고쳤는데 빌드해서 이 문제가 생겼는데
지금 전체 구성을 바꿔야된다고 하긴 어렵거든요.
진짜 아무것도 손 안대고(COM+쪽은 하나도 안건드리고 화면쪽 프로젝트만 고쳤단 말이죠. T.T)
솔루션 전체 빌드만 했는데 COM+ 호출 오류가 발생하니 무슨 이런일이 있는겐지

3tier 구성은 일반적인 네트웍 구성인줄 알았는데
닷넷으로 개발된 사이트들은 어떻게들 하시나요?
DMZ 구간에서 직접 DB 포트를 열어주시진 않을테고
말씀해주신 웹서비스형태로 구현하는게 대세인가요?
COM+ 는 예전에만 쓰던거고 지금은 잘 안쓰나요?


[guest]
2013-05-30 07시12분
[guest] 웹단 소스만 배포해서 문제가 생겼다면
DLL 배포후에 IISRESET 해보세요.

안해 주면 종종 에러를 뱉어 냅니다. 퉤퉤퉤 -_-;
[guest]
2013-05-30 07시29분
[guest] 옛날에 COM+ 썼던 이유가 대기열 관리나 MTS 쓰는 이유 말고는 없었던거 같은데요.

웹 환경에서는 글쎄요. IIS app pool이 왠만한건 해주니 그닥 쓸이유가 없어졌구요.

MTS 쓸려고 COM+ 쓰는 거라면 COM+ 재등록 관리 문제로

transcationscope를 사용 합니다. (내부적으로는 System Application 이라는 COM+을 호출)

암튼 소스가 COM+ 기반하에 만들어 졌으니 다 고치지 못하는 상황이면 불편함을 감수 하시는 법 밖에는...




[guest]

... [46]  47  48  49  50  51  52  53  54  55  56  57  58  59  60  ...
NoWriterDateCnt.TitleFile(s)
3695Bere...2/15/201612875호출당한 메서드가 호출한 메서드를 알 수 있는 방법이 일반적인 방법 말고도 있을까요? [2]
3693조영준2/11/201613569UWP 앱을 만들고 있습니다. 죄송하지만 몇 가지 질문 드립니다. [4]
3692후배2/8/201612513html/css/js를 이용한 winForm의 UI표현이 가능 한가요? [3]
3690김대석2/5/201610982문의 드립니다. [2]
3687허재영2/3/201612579web api 보안관련 질문입니다. [2]
3685조진우2/1/201612508메인 응용 프로그램에서 DLL을 실시간으로 접근하여 사용하는데 이것을 모니터링 할 수 있을 까요? [1]
3684나그네1/27/201611844안녕하세요..wcf 관련하여 질문있습니다. [4]파일 다운로드1
3683김태형1/25/201612142 안녕하세요 저작도서를 구매하려는데 한가지 문의 사항이 있어서 질문드립니다. [1]
3681이영균1/8/201614744IE브라우저 추가기능관리의 항목을 사용함으로 c#코드로 변경을 하려고 합니다. [8]
3680후배1/6/201614961추천할만한 소켓 라이브러리 있으신가요? [2]
3679초록물꼬기1/6/201613822Parallel.For 에서 동기화문제에 관한 질문입니다. [11]파일 다운로드1
3678김민우1/3/201612256IHS 오류에 대한 질문입니다. [2]파일 다운로드1
3677초록색우산12/31/201513837HTTP 통신 - WebClient 이용시 한글깨짐 현상 발생 [2]
3676서정열12/31/201512656안녕하세요 WebService SoapExtensionImporter 에 대해서 질문드립니다. [3]
3675차가워12/30/201511717윈폼, 폼인폼 상황에서 하위컨트롤 포커스 문제 [1]
3673Sung...12/24/201512772UWP예외 발생 : 'System.Runtime.InteropServices.COMException'(mscorlib.ni.dll) 해결방법 [2]
3672Sung...12/23/201512015global::System.Diagnostics.Debugger.Break();가 노랗게 표시될시 [2]
3671이상준12/22/201516180한글 키보드 입력에 대해서 질문이 있습니다. [3]
3670Sung...12/18/201512960UWP 주기적으로 신호를 보내고 클라이언트에서 신호가 오면 받는 프로그램을 하려고 합니다. [5]
3669다비드12/18/201511250인터넷 임시파일 삭제 관련 질문. [1]
3668김치사발면12/16/201510708템플릿이 자꾸 초기화? 되버리네요 [1]
3667김치사발면12/15/201510632템플릿 설정 추가 질문 [1]파일 다운로드1
3666노태현12/15/201510047사용자별로 권한을 주고 볼 수 있는 데이터를 제한하려면 어떤 방법으로 접근하는게 좋을까요? [2]
3665김치사발면12/14/201513134C# 템플릿 설정이 이상해요ㅜㅜ [3]파일 다운로드1
3664KuLu12/10/201510453멀정하던 사이트 중 일부메뉴가 응답없음이 되어버립니다. [3]
3663Sung...12/10/201511851UWP 서버 프로그래밍 작업 중 [5]
... [46]  47  48  49  50  51  52  53  54  55  56  57  58  59  60  ...