Silverlight 2 Beta2 퍼가기 시, JS 관련 이벤트 무시 문제 해결하기

Silverlight/Lecture 2008.06.16 14:46

실버라이트 어플리케이션을 <object>단위로 자기 블로그 등으로(External로) 퍼가기 했을 경우,
원 서비스에서는 잘 되던 기능들이 잘 작동 안하는 경우가 있습니다.

애용하는 MouseWheelHelper의 휠 이벤트가 발생 안하고,
WebClient 사용시 메서드 수행후 비동기 콜백이 발생하지 않는 문제
가 있었습니다.

박스마일이 해결책을 찾아보려 백방으로 뛰어 보았지만, 쉽게해결이 되지 않아,
실버라이트 포럼에 질문을 올렸고, Sergey Volk MSFT가 답변을 올려줬네요.

그 해결책에 대한 내용을 이과장님이 네이버 실버라이트 카페에 정리를 해주셨는데요.
http://cafe.naver.com/ArticleRead.nhn?clubid=13624133&articleid=2537

약간 내용을 달리하여 정리해 보았습니다.

해결책

AppManifest.xml 파일의 Deployment 엔티티의
ExternalCallersFromCrossDomain 속성값을 FullAccess로 설정합니다.


행동

솔루션 탐색기(Solution Explorer)에서 해당 실버라이트 프로젝트의 Properties 노드 아래의
AppManifest.xml (Manifest File Template)을 엽니다.

사용자 삽입 이미지

그리고  ExternalCallersFromCrossDomain 속성 (붉은 글자 부분)을 추가합니다.

<Deployment xmlns="http://schemas.microsoft.com/client/2007/deployment"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        ExternalCallersFromCrossDomain="FullAccess"
>
    <Deployment.Parts>
    </Deployment.Parts>
</Deployment>

이렇게 하고 나면 빌드 할 때마다 생성되는 xap 패키지 안에 내용물로,
ExternalCallersFromCrossDomain 속성을 가진 AppManifest.xml 파일이 생성됩니다.
다음과 같이!

<Deployment xmlns="http://schemas.microsoft.com/client/2007/deployment" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" ExternalCallersFromCrossDomain="FullAccess" EntryPointAssembly="DeepView" EntryPointType="DeepView.App" RuntimeVersion="2.0.30523.6">
  <Deployment.Parts>
    <AssemblyPart x:Name="DeepView" Source="DeepView.dll" />
    <AssemblyPart x:Name="UXLib" Source="UXLib.dll" />
    <AssemblyPart x:Name="HFLib" Source="HFLib.dll" />
    <AssemblyPart x:Name="System.Xml.Linq" Source="System.Xml.Linq.dll" />
  </Deployment.Parts>
</Deployment>

이 문제는 한동안 실버라이트 개발자를 귀찮게 하겠지만,
결국 시간이 깔끔하게 해결해 주리라 믿습니다. (차기 버전에서...)

설정

트랙백

댓글