다음을 통해 공유


샘플: 웹 리소스로 파일 가져오기

 

게시 날짜: 2017년 1월

적용 대상: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

웹 리소스로 사용하기 위해 많은 파일을 개발할 때 응용 프로그램을 통해 수동으로 추가하는 작업을 줄일 수 있습니다. 많은 웹 리소스를 Microsoft Dynamics 365(온라인 및 온-프레미스) 외부에서 개발하여 테스트한 후 가져올 수 있습니다.

이 샘플에서는 이러한 프로세스의 간단한 예제를 제공합니다. 웹 리소스를 가져오는 데 사용할 수 있는 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 365 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 365용 웹 리소스

Microsoft Dynamics 365

© 2017 Microsoft. All rights reserved. 저작권 정보