Microsoft MVP성태의 닷넷 이야기
원격지 서버에서 COM+ 호출이 되지 않습니다. [링크 복사], [링크+제목 복사],
조회: 15897
글쓴 사람
황은영 (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)
5756흰털너부리11/25/20223476asp.net core web api에서 json 특정 property 무시하는 방법 문의 드립니다. System.Text.Json 사용중입니다. [1]
5755문정환11/24/20223801싱글스레드 프로그램도 컨텍스트 스위칭이 생길 수 있나요? [4]
5754초급11/24/20223650c# 소켓통신 [1]
5753흰털너부리11/24/20223464List와 ObservableCollection을 비교 해서 다른 값 추출 FirstOrDefault 객체 비교 [4]파일 다운로드1
5752푸헐11/15/20223589app.config 에 connectionStrings를 aspnet_regiis로 enctyption [4]
5751차가워11/8/20224400vs2022 preview net7 AOT 콘솔 실행 성능 [7]
5749차가워11/4/20223818전처리 지시문 #if DEBUG 배포시 실행 여부 [1]
5748김기헌11/3/20224158안녕하세요 선생님 싱글톤 패턴을 꼭 이렇게 사용해야 하나요? [6]
5747김기헌11/2/20223536안녕하세요 선생님 네트워크 관련 용어 중 IP 주소가 왜 논리적 주소라고 표현되는 건가요? [2]
5746물냉면이...11/2/20223734서로 다른 클래스에 있는 동일 함수의 일괄 호출 방법에 대해 궁금합니다. [3]
5745흰털너부리11/1/20224067.net core web api 사용 제한에 관한 질문 입니다. [2]
5744차가워10/31/20224465윈폼 Console.WriteLine(); 연산 문의 [1]
5743흰털너부리10/27/20223784reflection, static, override 질문입니다. [1]
5742차가워10/27/20223687하나의 socket에 여러 스레드가 접근 하는 경우 [1]
5741조호상10/27/20223930OpenCVSharp4 구현 가능 문의 [1]
5740혜성10/26/20224762Visual Studio 2022 C# 콘솔 프로그램 기본 코드 변경된 이유는 무엇인가요? [2]
5739슬픈단잠10/25/20223719조언 주신 방법으로 해봤으나, 여전히 어디가 문제인지 파악을 못했습니다. [2]
5738슬픈단잠10/24/20224115C# 마샬링 관련 질문입니다. [2]
5737감사합니...10/20/20224773찾은 어셈블리의 매니페스트 정의와 어셈블리 참조가 일치하지 않습니다. [8]파일 다운로드1
5736초보 개...10/19/20223770c# winforms 프로그램을 setup 파일로 배포 시, 설정 문의 [2]
5735농상10/17/20224434싱글톤 공부중 질문이 있습니다. [8]
5734mins10/14/20224169델파이 dll을 c#에서 사용하기 관련해서 포인트 관련이라 질문을 올립니다. [2]
5733김경환10/12/20224197선생님 질문하나만드리겠습니다. [1]
5732kss10/8/20224461c# socket.poll 버그인가요? [2]파일 다운로드1
5731kss10/8/20224032c# socket.poll 버그인가요? [3]
5730김재환10/7/20224573WPF에서 디스플레이 배율이 100%가 아닌 경우, Window의 포지션 정보가 부정확해지는 문제 [2]
1  2  3  4  5  6  7  [8]  9  10  11  12  13  14  15  ...