2008. 12. 22. 11:29

IE임베디드 스마트클라이언트를 테스트겸 작성해보면서 겪었던 문제점과 해결방법을
간단하게 정리해보겠습니다.

혹시나, 저와 같은 문제를 겪으실지도 모르는 분들을 위해.. 팁으로 알아두셨으면 합니다.

몇개 안되지만.. 도움이 되었으면 합니다. ^^



1. 스마트클라이언트에서 소켓 라이브러리 사용시 지연문제

2. DLL 추가 검색 문제

3. DLL 중복 다운로드 문제

4. 기타문제



저로 하여금 난감스럽게 만들었던 문제들입니다. 혹시나 해당되시는 분들이 있으시다면..
도움이 되길 바랍니다.

참고로 원리와 이유는 배제하고 해결법만 기재하겠습니다. 원리와 이유에 대해 자세히 알고자
하시는 분은.. 아래 사이트를 참고하시기 바랍니다.


"유경상"님과 "정성태"님의 글이 잘 정리되어있습니다.


http://taeyo.net/ (ASP.NET(외부)란에 정성태님의 스마트클라이언트 관련 게시물)

http://www.simpleisbest.net/archive/2006/01/02/360.aspx (유경상님의 닷넷블로그입니다.(추천))


그외, 데브피아 (강좌&팁 / 질답게시판)





1. 스마트클라이언트에서 소켓 라이브러리 API사용시 지연문제의 해결 ---------------------------


   http://www.devpia.com/forum/BoardView.aspx?forumname=csharp_lec&page=1&no=1059&code=

   링크로 직접보시는게 가장 적절한듯 싶어 링크를 걸어 놓습니다.


   주 내용은, IE임베디드 형태의 스마트클라이언트에서 소켓 라이브러리 API를 사용하기 전에

   System.Configuration.ConfigurationSettings.GetConfig("system.net/settings");
   구문을 먼저 삽입하라 입니다.


   본 내용은 강좌는 아니고 팁이므로 원리에 대해서는 설명하지 않겠습니다.


   * 일부 PC에서는 해당 구문의 삽입여부와 무관하게 정상적으로 동작하는것을 확인했습니다만
   역시나 넣어주는것이 안전합니다.




2. DLL추가 검색문제-----------------------------------------------------------
   스마트클라이언트 배포시 Fiddler를 통해 모니터링 하시다 보시면.



위와 같이 이미 DLL를 검색하고 다운로드 했음에도 불구하고 여기저기 다른곳을 검색하며,
파일을 찾을수 없다는 404에러를 뿌립니다. 이 문제의 해결책은 다음과 같습니다.

  일단 스마트클라이언트의 Config파일을 작성해야 합니다. 파일명은 "XXXX.dll.config" 입니다.  
 *.dll.config가 되야하므로 이점 주의하시기
바랍니다. config파일의 내용은 없어도 무방합니다.

  config파일은 배포할 스마트클라이언트 dll파일과 같은 곳에 위치해야합니다.


  웹파일에 다음구문을 추가합니다.  
  <link rel = "Configuration" href = "SmartClient_DLL/SmartClient.dll.config">


  * 참조경로 주의.


  역시나 이유와 원리에 대해서는 설명하지 않도록 하겠습니다. "정성태"님의 글에서는 문제점만 나타내었고.
  해결책이 제시되어있지 않지만 "유경상"님의 블로그에는 위와 같이 하는 이유에 대해
  자세히 설명되어있습니다. 해당 블로그를 참고 하시기 바랍니다.


  위와 같이 처리했다면, 배포시 여러군데서 중복검색하는 부하를 줄일 수 있습니다.

  해결된 모습입니다.


 


   


   

3. DLL 중복 다운로드 문제 ---------------------------------------------------------


   2번의 문제 해결을 읽어보시다가 발견하셨으리라 생각합니다.

   그림을 보시면   dll과 DLL 이렇게 확장자의 대소문자를 바꿔서 두번 다운로드 된것을 보실수 있을겁니다.


   이 문제에 대한 이유는 아쉽게도 찾을 수 없었습니다.

   

   허나, 데브피아 질답게시판에서 "유경상"님이 답변해주신 게시물을 발견했습니다.
   그곳에 해결책이 기재되어있더군요.


   해결책은 웹소스파일에서


   <OBJECT id="SC" style="WIDTH: 740px; HEIGHT: 544px"
   classid="SmartClient_DLL/SmartClient.dll#SmartClient.OTIS_WebViewer"  VIEWASTEXT VIEWASTEXT>
   </OBJECT>


   dll로 소문자기재를 하지말고, DLL로 대문자를 사용하라는 것이었습니다. (이유는 아쉽게도 모릅니다.)


   <OBJECT id="SC" style="WIDTH: 740px; HEIGHT: 544px"
   classid="SmartClient_DLL/SmartClient.DLL#SmartClient.OTIS_WebViewer"  VIEWASTEXT VIEWASTEXT>
   </OBJECT>



    중복다운로드를 해결한 모습입니다.


   




4. 기타 문제들...----------------------------------------------------------------------


   1) 컨트롤이 웹상에서 보이지만 동작하지 않을때


      >>  권한집합을 FullTrust로 준다음 제대로 동작하는지 재확인한다. 정상적이라면 소스코드중 권한을
   넘어서는 것이 없는지 확인하고
 권한의 범위를 재설정해본다.





   2) FullTrust권한을 주었음에도 불구하고, 컨트롤에 웹에서 보이기만 할뿐 동작하지 않을때.


       >> 프레임워크 1.1이 맞는지 확인한다. 상위버젼이 설치되어 있지 않은지 확인하고 만약 그렇다면


       C:\Program Files\Internet Explorer 폴더에 iexplore.exe.config 파일을 새로 생성하고,


       <?xml version="1.0" encoding="utf-8" ?>

          <configuration>

                <startup>

                      <requiredRuntime version="v1.1.4322"/>

                </startup>

           </configuration>


        이와 같이 익스플로러 실행시 사용할 프레임워크의 버젼을 지정해준다.





    3) 변경된 내용이 즉각 적용되지 않을때.


       >> 내용을 수정했다면, AssemblyInfo.cs파일의 어셈블리 버젼을 바꿔보자.


       >> 새로고침을 하지 말고 익스플로러를 완전히 종료하고 새로 열어보자.










-------------------------------------------------------------------------------


이 외에도 여러가지 문제점이 있었지만.. 막상 쓸려니 기억이 나질 안네요...(에휴 바본가봐.ㅜ.ㅜ)

다시한번 말씀드리지만. 이글은 강좌는 아니므로.. 중요한 원리와 이유에 대한 언급을 하지않았습니다.

훨씬 좋게 정리된 글들이 있으므로 그것을 참고하시기를 바라는 바입니다.



다만 직접 해보면서 겪었던 문제들에 대한 해결책들이 여기저기 흩어져 있었기에..
그것을 모아놓은 글이라 생각해주세요.


그럼 이만 끝냅니다. ^^


출처

http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=18&MAEULNo=8&no=1163&ref=1163
Posted by 굿데이