본문 바로가기
Development/Silverlight

실버라이트에서 Client IP 얻어서 사용하기

by KingCat 2011. 4. 28.

실버라이트에서는 기본적으로 Request를 사용할 수 없다. WebPage를 상속하지 않기 때문인데 이와 같은 경우 실버라이트를 호출하는 aspx 페이지에서 param을 이용해서 사용할 수가 있다.

우선 실버라이트를 호출하는 aspx 페이지에 가보면

<body>
    <form id="form1" runat="server" style="height:100%">
    <div id="silverlightControlHost">
        <object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
          <param name="initParams" value="ClientIP=<%=Request.UserHostAddress %>, cc=true,m=relative" />
    <param name="source" value="/ClientBin/SilverlightMain.xap"/>
    <param name="onError" value="onSilverlightError" />
    <param name="background" value="white" />
    <param name="minRuntimeVersion" value="4.0.50826.0" />
    <param name="autoUpgrade" value="true" />
    <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=4.0.50826.0" style="text-decoration:none">
      <img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="Get Microsoft Silverlight" style="border-style:none"/>
    </a>
     </object><iframe id="_sl_historyFrame" style="visibility:hidden;height:0px;width:0px;border:0px"></iframe></div>
    </form>
</body>

위와 같은 코드가 있다. 위에서 빨간색 글 부분이 추가한 부분이다. initParams라는 파라미터로 Request를 사용해서 얻은 Client IP를 넘겨준다.

이 후 실버라이트 프로젝트로 가서 App.xaml.cs로 가면

private void Application_Startup(object sender, StartupEventArgs e)
        {
            string ip = "";

            if (e.InitParams.ContainsKey("ClientIP"))
                ip = e.InitParams["ClientIP"];

            this.RootVisual = new MainPage(ip);
        }

위와 같은 코드가 나온다. 마찬가지로 빨간색 글이 추가한 부분이고, 생성자에 전달받은 ip를 넘겨주는 것을 볼 수 있다.

private string ip;
public MainPage(string ip)
        {
            InitializeComponent();

            this.ip = ip;
        }

이 후 생성자에 전달받은 값을 넘겨받고 사용하면 된다.




'Development > Silverlight' 카테고리의 다른 글

DataGrid에서 Row Data 모두 가져오기  (0) 2011.05.03