샘플: 웹 리소스로 파일 가져오기
게시 날짜: 2016년 11월
적용 대상: Dynamics CRM 2015
웹 리소스로 사용하기 위해 많은 파일을 개발할 때 응용 프로그램을 통해 수동으로 추가하는 작업을 줄일 수 있습니다. 많은 웹 리소스를 Microsoft Dynamics CRM 2015 및 Microsoft Dynamics CRM Online 2015 업데이트 외부에서 개발하여 테스트한 후 가져올 수 있습니다.
이 샘플에서는 이러한 프로세스의 간단한 예제를 제공합니다. 웹 리소스를 가져오는 데 사용할 수 있는 WPF 응용 프로그램을 제공하는 더 복잡한 샘플은 샘플: 웹 리소스 유틸리티를 참조하십시오.
이 샘플 코드는 Microsoft Dynamics CRM 2015 및 Microsoft Dynamics CRM Online 2015 업데이트용입니다.Microsoft Dynamics CRM SDK 패키지를 다운로드합니다. 다운로드 패키지의 다음 위치에서 확인할 수 있습니다.
SDK\SampleCode\CS\Client\WebResources\ImportWebResources\
요구 사항
이 SDK에서 제공된 샘플 코드를 실행하기 위한 요구 사항에 대한 자세한 내용은 샘플 및 도우미 코드 사용을 참조하십시오.
SDK 다운로드 패키지에 포함된 샘플 코드에는 이 샘플에 필요한 다음 파일이 포함됩니다.
ImportJob.xml
이 파일은 생성되는 웹 리소스 레코드에 대한 데이터를 제공합니다. 각 파일에 대해 다음 데이터가 들어 있습니다.path: FilesToImport 폴더의 각 파일에 대한 경로입니다.
displayName: 웹 리소스에 대한 표시 이름입니다.
description: 각 파일이 수행하는 작업에 대한 설명합니다.
name: 웹 리소스에 사용되는 이름입니다.
참고
-
이러한 각 이름은 밑줄 문자로 시작합니다. 솔루션 게시자의 사용자 지정 접두사는 웹 리소스를 만들 때 이름 앞에 추가됩니다. 특정 사용자 지정 접두사를 하드 코딩하는 대신 이 샘플은 조직이 이미 있을 수 있는 게시자 레코드에 대한 현재 사용자 지정 접두사를 검색합니다.
-
이러한 각 파일은 Microsoft Dynamics 365 외부에서 개발되어 상대 경로에 따라 서로 액세스하므로 이름에는 가상 폴더 구조를 만들기 위해 백슬래시 “/” 문자가 포함되어 Microsoft Dynamics 365 내에 상대 링크가 계속 작동합니다.
-
type:웹 리소스 유형에 있는 정수 값을 사용하여 만드는 웹 리소스의 유형을 지정합니다.
FilesToImport/ShowData.htm
이 HTML 웹 리소스에는 다음 표를 표시하는 각각 다른 파일이 필요합니다.이름
성
Apurva
Dalia
Ofer
Daliot
Jim
Daly
Ryan
Danner
Mike
Danseglio
Alex
Darrow
FilesToImport/CSS/Styles.css
이 파일은 ShowData.htm에 사용되는 CSS 스타일을 제공합니다.FilesToImport/Data/Data.xml
이 파일에는 표에 표시되는 이름 목록이 들어 있습니다.FilesToImport/Script/Script.js
이 파일에는 Data.xml 파일과 Transform.xslt 파일의 상대 위치에 대한 정보가 포함된 JScript 라이브러리가 들어 있습니다. 데이터를 변환하여 ShowData.htm 페이지에 추가하는 showData 함수도 들어 있습니다.FilesToImport/XSL/Transform.xslt
이 파일에는 데이터를 HTML 테이블로 변환하는 방법의 XSL 정의가 들어 있습니다.
보여 주기
솔루션의 컨텍스트에서 웹 리소스 만들기
웹 리소스는 조직 담당 레코드이므로 IOrganizationServiceCreate 메서드 또는 CreateRequest 메시지 및 IOrganizationService를 사용하여 만들 수 있습니다.Execute 메서드. 이 샘플에서는 웹 리소스를 만들 때 SolutionUniqueName 선택적 매개 변수를 사용하여 웹 리소스를 특정 솔루션에 연결하는 방법을 보여 줍니다.CreateRequest 메시지를 사용해야 합니다.
디스크에서 파일 업로드
WebResource.Content 속성에는 파일의 이진 내용을 나타내는 Base 64 문자열이 필요합니다. 다음 샘플은 파일을 필요한 유형으로 변환하는 데 사용되는 메서드입니다.
//Encodes the Web Resource File
static public string getEncodedFileContents(String pathToFile)
{
FileStream fs = new FileStream(pathToFile, FileMode.Open, FileAccess.Read);
byte[] binaryData = new byte[fs.Length];
long bytesRead = fs.Read(binaryData, 0, (int)fs.Length);
fs.Close();
return System.Convert.ToBase64String(binaryData, 0, binaryData.Length);
}
웹 리소스 레코드 데이터와 파일 데이터 결합
ImportJob.xml 파일은 파일에 대한 데이터를 가져오는 방법과 웹 리소스에 대한 데이터를 만들어 결합하는 방법을 보여 줍니다. 특히 관련 파일 간의 상대 링크를 계속 작동하려면 만들 웹 리소스의 이름은 파일 이름에 시뮬레이션된 디렉터리를 사용하여 디스크에서 파일의 상대 위치에 대한 정보를 저장해야 합니다. ImportJob.xml 파일의 데이터 때문에 이러한 관련 웹 리소스 파일은 모두 일반적인 가상 폴더에 만들어집니다.
참고
웹 리소스를 만들 때 게시할 필요는 없습니다. 업데이트할 때 게시해야 합니다.
예제
ImportWebResources.cs 파일의 다음 부분에는 다음 변수가 필요합니다.
_customizationPrefix : Microsoft Dynamics CRM SDK 샘플 게시자의 사용자 지정 접두사입니다. 이 게시자가 없을 경우 "sample"이라는 사용자 지정 접두사를 사용하여 만들어집니다.
_ImportWebResourcesSolutionUniqueName : 이 샘플에서 만든 웹 리소스 샘플 솔루션 가져오기의 고유 이름입니다. 값은 ImportWebResourcesSample입니다.
//Read the descriptive data from the XML file
XDocument xmlDoc = XDocument.Load("../../ImportJob.xml");
//Create a collection of anonymous type references to each of the Web Resources
var webResources = from webResource in xmlDoc.Descendants("webResource")
select new
{
path = webResource.Element("path").Value,
displayName = webResource.Element("displayName").Value,
description = webResource.Element("description").Value,
name = webResource.Element("name").Value,
type = webResource.Element("type").Value
};
// Loop through the collection creating Web Resources
int counter = 0;
foreach (var webResource in webResources)
{
//Set the Web Resource properties
WebResource wr = new WebResource
{
Content = getEncodedFileContents(@"../../" + webResource.path),
DisplayName = webResource.displayName,
Description = webResource.description,
Name = _customizationPrefix + webResource.name,
LogicalName = WebResource.EntityLogicalName,
WebResourceType = new OptionSetValue(Int32.Parse(webResource.type))
};
// Using CreateRequest because we want to add an optional parameter
CreateRequest cr = new CreateRequest
{
Target = wr
};
//Set the SolutionUniqueName optional parameter so the Web Resources will be
// created in the context of a specific solution.
cr.Parameters.Add("SolutionUniqueName", _ImportWebResourcesSolutionUniqueName);
CreateResponse cresp = (CreateResponse)_serviceProxy.Execute(cr);
// Capture the id values for the Web Resources so the sample can delete them.
_webResourceIds[counter] = cresp.id;
counter++;
Console.WriteLine("Created Web Resource: {0}", webResource.displayName);
}
웹 리소스를 만들 때 게시할 필요는 없습니다. 업데이트할 때 게시해야 합니다.
참고 항목
샘플: 웹 리소스 유틸리티
WebResource 엔터티 메시지 및 메서드
Microsoft Dynamics CRM 2015용 웹 리소스
© 2017 Microsoft. All rights reserved. 저작권 정보