죄송합니다 상당히 형편없이 만든 수준낮은 예제입니다. 근거 없는 자신감으로 올려봅니다 -_-;
------------------------- 순 서 -------------------------
1. WAV 파일 재생기 Window Control Library 제작
2. 예제 웹사이트에 Object 태그를 이용한 Dll 파일 Embed
3. CAS(Code Access Security) 보안 설정 프로그램 배포 및 설치
2. 예제 웹사이트에 Object 태그를 이용한 Dll 파일 참조
2-(1) ASP.NET 웹 사이트 생성
해당 웹사이트에 1번(Wav 파일 재생기 Window Control Library 제작에서 빌드한 DLL) 항목에서 빌드한 Dll 파일을 추가 한다.
솔루션 탐색기 - 기존 항목 추가 - Dll 파일 추가
------------------------------------------------------------------------------------------------------------
ASPX 페이지의 소스에 Dll 파일을 Object 태그를 이용해 Embed 한다.
<%@ PageLanguage="C#"AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>-ml:namespace prefix = o />-ml:namespace prefix = o />-ml:namespace prefix = o />-ml:namespace prefix = o />-ml:namespace prefix = o />-ml:namespace prefix = o />-ml:namespace prefix = o />-ml:namespace prefix = o />-ml:namespace prefix = o />-ml:namespace prefix = o />-ml:namespace prefix = o />
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<formid="form1"runat="server">
<div>
<object id="WavPlayer" classid="SmartClient_AudioPlayer.dll#SmartClient_AudioPlayer.SoundPlayer"></object>
</div>
</form>
</body>
</html>
classid의 부분에 Dll 파일경로를 명시해 주며 # 뒤에는 라이브러리의 네임스페이스.클래스명 을 명시해준다.
------------------------------------------------------------------------------------------------------------
ASPX.CS의 소스 내용이다.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string filePath = "C:\\test.wav";-ml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
string PlayScript = "document.all.WavPlayer.WavPlay('" + filePath + "');";
this.ClientScript.RegisterStartupScript(this.GetType(), "WavPlay", PlayScript, true);
}
}
Page_Load 이벤트에서 Public으로 선언한 WavPlay 메소드를 호출하여 Wav 파일을 웹 브라우저에서 재생시켜본다!!..
-----------------------------------------------------------------------------------------웹 페이지를 빌드하여 실행 결과를 확인해보도록 한다.
빌드를 해보니 OBJECT 태그를 이용해 참조한 Wav 의 재생기는 정상적으로 로드가 되었으나 Page_Load 이벤트에 재생 명령을 명시한것이
동작하지 않는다!! 그리고 보안에 관한 에러 메세지가 Throw 된다. -_-;;
인터넷에서 해결방법을 찾아보니 CAS (Code Access Security)에 관한 부분을 설정해줘야 해당 wav재생기가 동작할 수 있었다.
즉 Dll(어셈블리)을 클라이언트에서 자동으로 다운로드받아 참조하여도 어셈블리에 대한 신뢰성이 없고 특정 참조나 메소드를 실행하는 과정에서
클라이언트에서는 보안문제로 실행을 막기 때문에 액세스 권한을 조정해줘야 한다는 뜻이었다.
(
제가 실력이 부족해 설명이 너무 부족합니다. 죄송합니다. CAS 부분에 대한 개념과 설명은 유명하신
유경상님의 닷넷 블로그에서 개념과 문제 해결방안을 찾으실수 있을거 같습니다.
http://www.simpleisbest.net/archive/2006/04/28/612.aspx
)
-----------------------------------------------------------------------------------------
'C# > SmartClient' 카테고리의 다른 글
AxWMPLib 를 이용한 간단한 Wav,Mp3 재생기 입니다. (0) | 2014.07.08 |
---|---|
MediaPlayerClass 를 이용한 간단한 미디어 플레이어(wav,mp3 재생) (3) | 2014.07.08 |
클라이언트 .Net Framework 4이상 업데이트시 기존 SmartClient 운영방안 (0) | 2014.07.04 |
SmartClient를 이용한 간단한 Wav 파일 재생기 제작 - 3.CAS(Code Access Security)보안설정프로그램설치 (0) | 2013.02.01 |
SmartClient를 이용한 간단한 Wav 파일 재생기 제작 - 1. WAV 파일 재생기 Window Control Library 제작 (1) | 2013.01.28 |