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

... [61]  62  63  64  65  66  67  68  69  70  71  72  73  74  75  ...
NoWriterDateCnt.TitleFile(s)
1078Ho S...8/10/20128749윈도우폰 지도 구현에서 ㅠㅠㅠ 질문드립니다. [1]파일 다운로드1
1077한우주8/6/201211693웹서비스 호출 후 세션 유지하기 [1]
1076이성환8/2/201211156dynamic 변수 할당은 도대체 어디에???? [1]
1073pass...7/24/201210994c# 으로 만드는 음성인식/TTS 프로그램에 관련해서.. [3]
1072일반인7/23/201213272rss 만드는 방법 알려주실 수 있으신가요? [5]
1069임경훈7/20/201214003아래와 같은 오류후 IIS가 다운되는 현상이 발생합니다. [1]
1068신호철6/15/201213335ClassLibrary COM+ 등록 안되는 현상 [2]
1067김은주6/14/201222714소스세이프 사용시 pfx 파일 빌드 실패 [3]
1066너무초보6/3/20129898안녕하세요! 디렉토리 삭제 오류 질문 좀 드립니다. [4]
1065이성환5/23/201211701Assembly.LoadFrom Assembly.Load 의 차이점이 궁금합니다. [2]파일 다운로드1
1064푸우5/21/201210499GPU 디바이스 재시작시 WPF + .NET 3.5 기반 어플리케이션 UI 문제 [2]
1063발코더5/20/201210655귀신 곡할 상황 질문입니다. [3]
1062김규덕5/12/201210794ffmpeg 관련 조언 구합니다. [2]
1061Dave5/11/20129516언제 스크린 캡쳐 하시나요? [1]
1058정재훈5/11/201211413c#으로 동영상에 로고를 삽입하는 기능을 구현중입니다. [3]
1057전남진5/1/201210451** 몇일째 고생하다가 웹 검색을 통해 알게되어 질문드립니다.. 초보 질문이긴하지만 도움 부탁드려요 [2]
1056안현수5/1/201212221listview 와 웹파싱에관해 질문드립니다 [1]파일 다운로드1
1055이성환4/30/201210388WPF FramworkElement의 이벤트를 가져오고 싶습니다. [3]
1054정웅모4/20/20129923안녕하세요 [1]
1053폭풍코딩4/19/201210256스마트클라이언트 ctrl-c 복사가 작동하지 않습니다. [1]
1052에슈리온4/17/201225944ClickOnce 배포시 클라이언트의 설치경로를 지정할 수 없나요? [1]
1051최정수4/10/201213081WCF 클라이언트 비정상 종료 관련 [1]
1050에슈리온4/6/201215034관리자 권한과 ClickOnce, 그리고 Bootstrapper문제 [6]
1049김성혁4/4/20129756스마트클라이언트 stand-alone 방식의 배포 문제.. [1]
1048C#조으다3/27/201213485어셈블리 로드 / 언로드와 관련해서.. [6]
1047김우형3/23/201211238WCF 서비스를 이용한 데이터 전송 중 Exception 문의 [1]
... [61]  62  63  64  65  66  67  68  69  70  71  72  73  74  75  ...