Microsoft MVP성태의 닷넷 이야기
원격지 서버에서 COM+ 호출이 되지 않습니다. [링크 복사], [링크+제목 복사]
조회: 9730
글쓴 사람
황은영 (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








donaricano-btn



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


비밀번호

댓글 쓴 사람
 



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

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

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

이것은 일반적인 방법이고


저의 방법이라면

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

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

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

이상입니다.

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

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




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

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

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

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

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

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

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

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

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

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

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

이상입니다.

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

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

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


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

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

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

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

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

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




[손님]

... 31  32  33  34  35  36  37  38  [39]  40  41  42  43  44  45  ...
NoWriterDateCnt.TitleFile(s)
1211조광훈2/12/20147302isapi 필터 로드 오류 [2]
1208박지호2/9/20149011[오타] 시작하세요 C# 프로그래밍 p.267 ~ 350 [1]
1207임동찬2/5/20144726Web페이지에서 .net application 실행시키는 방법 [3]
1206신지환2/3/20146716visual sourcesafe(internet) 체크인 에러 [1]
1205박지호2/2/20147514[오타] 시작하세요 C# 프로그래밍 p.199 ~ 202 [1]
1204김태훈1/27/201418679Windows Service 오류 문의입니다. [2]
1203박지호1/26/20148678[오타] 시작하세요 C# 프로그래밍 p.131, 157, 180 [1]
1202이창주1/24/20149991[질문] Windows Error Reporting [8]
1201김나리1/21/20144916[시작하세요 C# 프로그래밍] 비동기 호출 [1]
1200박지호1/19/20147721[오타] 시작하세요 C# 프로그래밍 p.76 [1]
1199윤종현1/9/20144650p654 의 비동기 관련 설명 [3]
1198초이1/4/20146012웹서비스 WSDL 생성및 프록시 클래스 생성 관련 질문입니다. [1]
1196박현수1/2/20145764[WCF] Client 호출 방법 [2]
1195박현수12/23/20136157[WCF] 클라이언트의 호출실패(IIS이용) [4]파일 다운로드1
1191박주만12/19/201312122C++ Dll 에서 C# 의 PictureBox이미지 변경문제 [1]
1193박주만12/19/20136431    답변글 [답변]: C++ Dll 에서 C# 의 PictureBox이미지 변경문제 [2]파일 다운로드1
1190정진호12/10/20134943비동기로 실행할수 있도록 Custom Attribute 를 만들고 싶습니다. [1]
1189Young Cheon Cheon12/10/20135336책을 사기전에 궁금한것이 있습니다. [1]
1188이민석12/5/20136147ocx 를 C#에서 마샬링관련 질문입니다.. [2]파일 다운로드1
1187이성환12/3/20137466WPF WebBrowser control의 자식 창이 close 되기 전 Navgate 재호출 문제 [2]파일 다운로드1
1186박종혁12/2/20135203책의 예제 중에 result 변수가 할당 되었지만 사용되지 않았다고 오류가 납니다!! [1]
1185박은희11/27/20137338멀티바이트로 개발한 프로그램을 유니코드로 변경시 쉽게 처리 하는법 [2]파일 다운로드1
1183박현수11/20/20135652WCF에서 web.config appsetting 읽기 [1]
1184박현수11/20/20136219    답변글 [답변]: WCF에서 web.config appsetting 읽기 [3]파일 다운로드1
1182유창우11/16/201315036자마린이 궁금... [8]
1181허관11/11/20134871책 샀습니다! [1]
... 31  32  33  34  35  36  37  38  [39]  40  41  42  43  44  45  ...