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

1  2  3  4  5  6  7  8  9  10  11  12  [13]  14  15  ...
NoWriterDateCnt.TitleFile(s)
5621장성욱3/8/20224489c# 로그 관련 질문 [1]
5620김민아3/7/20224511안녕하세요 비관리 객체를 반환하는 메소드 호출 시 궁금한 점이 있어서 질문드립니다 [2]
5619팡팡이3/3/20225853RSA 문의드립니다. [3]
5618김기헌3/2/20224394안녕하세요 생성자 옆에 this 키워드를 붙여 생성자를 여러 개 호출 시 질문드립니다 [2]
5617Edun2/25/20224530ArgumentOutOrRangeException에러 발생 [2]파일 다운로드1
5616csha...2/24/20224423readonly struct로 선언된 구조체를 특정 클래스에서 멤버변수로 가지는 경우 [1]
5615장성욱2/22/20226638SetThreadAffinityMask를 이용한 쓰레드 지정하는 방법에 대해 궁금합니다. [4]
5614민우2/22/20225926SSL 통신 문의 [6]
5613김인태2/22/20224445서버와 PC 간의 어플리케이션 성능 차이 [1]
5612팬입니다2/20/20224257Kastrel 서버 관련 [1]
5611차가워2/19/20224492stopWatch 늘어짐 문의 [3]
5610차가워2/18/20224373Stopwatch 늘어짐 문제 [1]
5609cs린이2/15/20224725c# 함수의 호출 방식에 대해 궁금합니다! [2]
5608지호2/10/20225234시작하세요 C# 8.0 중 제네릭타입의 IEnumerable [3]파일 다운로드1
5607이로운2/10/20224478안녕하세요. 궁금한게 있어서 질문드립니다. [1]
5605강성봉2/10/20224478TCP PSH flag 패킷 수신 에러 [1]
5604LW2/9/20224613VISUAL STUDIO 2019 ==> 2020 설치시 오류가 생겨서 문의드립니다. [3]
5603김진명2/9/20225894C# 10.0 출간은 언제쯤 계획하고 계신가요? [1]
5602신갑영2/8/20224712윈폼에 대해서 질문 드립니다. [1]
5601김인태2/4/20224952setup project 관련 [7]
5600itkim2/3/20225758윈도우 서버 계정 패스워드 인증 문의 [5]
5599레드골드2/3/20226268c#으로 ms word 제어 가능할까요? [6]
5598jaew...2/2/20224987Dictionary는 참조형식인가요?? [1]
5597재원2/2/20225316c# 9.0에 대한 내용을 받을 수 있나요? [1]
5596kss1/26/20225025듀얼 모니터 환경에서 wpf 프로그램 크기 변경 [2]
5594mira...1/25/20224662안녕하세요 try~catch 와 SuspendLayout~ResumeLayout 간 호출 문의드립니다! [2]
1  2  3  4  5  6  7  8  9  10  11  12  [13]  14  15  ...