Esempio: importare file come risorse Web
Data di pubblicazione: gennaio 2017
Si applica a: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online
Quando si sviluppa un numero elevato di file da utilizzare come risorse Web è possibile risparmiare il lavoro di aggiunta manuale tramite l'applicazione. Numerose risorse web possono essere sviluppate e testate all'esterno di Microsoft Dynamics 365 (online e locale) e quindi possono essere importate.
Viene qui riportato un esempio semplificato di questo processo. Per un esempio più complesso che fornisce un'applicazione WPF che è possibile utilizzare per importare le risorse Web, vedere Esempio: utilità risorsa Web.
Questo codice di esempio è per Aggiornamento di Microsoft Dynamics CRM 2015 e Microsoft Dynamics CRM Online 2015.Scarica il pacchetto SDK di Microsoft Dynamics CRM. È disponibile nel percorso seguente nel pacchetto di download:
SDK\SampleCode\CS\Client\WebResources\ImportWebResources\
Requisiti
Per ulteriori informazioni sui requisiti per l'esecuzione del codice di esempio fornito nell'SDK, vedi Utilizzare il codice di esempio e dell'helper.
Il codice di esempio incluso nel pacchetto di download SDK include i seguenti file richiesti da questo esempio:
ImportJob.xml
In questo file vengono forniti dati sui record della risorsa Web che verranno creati. Per ogni file contiene i dati seguenti:percorso: il percorso a ogni file FilesToImport nella cartella.
displayName: il nome visualizzato per la risorsa Web.
descrizione: una descrizione delle operazioni di ogni file.
nome: il nome che verrà utilizzato per la risorsa Web.
Nota
-
Ognuno di tali nomi inizia con un carattere di sottolineatura. Il prefisso di personalizzazione dell'autore di soluzioni verrà anteposto al nome quando viene creata la risorsa Web. Anziché impostare un prefisso di personalizzazione specifico come hard-coded, in questo esempio verrà rilevato il prefisso corrente di personalizzazione per un record relativo all'autore che può essere già presente nell'organizzazione.
-
Poiché tutti questi file sono stati sviluppati all'esterno di Microsoft Dynamics 365 e dipendono da percorsi relativi per accedere l'uno all'altra, i nomi includono i caratteri di barra rovesciata "/" per creare una struttura della cartella virtuale in modo che i collegamenti relativi continueranno a funzionare in Microsoft Dynamics 365.
-
tipo: specifica il tipo di risorsa Web da creare tramite i valori Integer disponibili in Tipi di risorsa Web.
FilesToImport/ShowData.htm
Questa risorsa Web HTML richiede ognuno degli altri file per visualizzare la tabella seguente.nome
il cognome
Apurva
Dalia
Ofer
Daliot
Jim
Daly
Ryan
Danner
Mike
Danseglio
Alex
Darrow
FilesToImport/CSS/Styles.css
Questo file fornisce gli stili CSS utilizzati in ShowData.htm.FilesToImport/Data/Data.xml
Questo file contiene l'elenco dei nomi visualizzati nella tabella.FilesToImport/Script/Script.js
Questo file contiene una libreria JScript che contiene informazioni sulla posizione relativa del file Data.xml e del file Transform.xslt. Questo campo contiene inoltre la funzione showData che trasforma i dati e li aggiunge alla pagina ShowData.htm.FilesToImport/XSL/Transform.xslt
Questo file contiene la definizione XSL su come trasformare i dati in una tabella HTML.
Dimostra
Creazione delle risorse Web nel contesto di una soluzione
Dal momento che le Risorse Web sono record di proprietà dell'organizzazione, possono essere create utilizzando IOrganizationService. Metodo Create o utilizzando il messaggio CreateRequest e IOrganizationService. Metodo Execute. In questo esempio verrà illustrato come utilizzare il parametro facoltativo SolutionUniqueName per associare una risorsa Web a una soluzione specifica quando viene creato. Ciò richiede l'utilizzo del messaggio CreateRequest.
Caricamento dei file dal disco
La proprietà WebResource.Content richiede una stringa Base 64 che rappresenta il contenuto binario del file. Il seguente esempio è il metodo utilizzato per convertire il file nel tipo richiesto.
//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);
}
Combinazione dei dati del record di risorsa Web con i dati del file
Il file ImportJob.xml illustra come vengono combinati i dati sui file importati e i dati sulla risorsa Web da creare. In particolare, affinché i collegamenti relativi tra i file correlati continuino a funzionare, il nome della risorsa Web creata deve conservare informazioni sulla posizione relativa dei file nel disco utilizzando le directory simulate nel nome file. A causa dei dati nel file ImportJob.xml tutti questi file di risorsa Web correlati verranno creati in una cartella virtuale comune.
Nota
Non è necessario pubblicare le risorse Web quando vengono create. È necessario pubblicarle quando vengono aggiornate.
Esempio
La seguente parte del file ImportWebResources.cs prevede le seguenti variabili:
_customizationPrefix: il prefisso di personalizzazione all'autore degli esempi di Microsoft Dynamics 365 SDK. Se questo autore non esiste verrà creato con il prefisso di personalizzazione di "esempio".
_ImportWebResourcesSolutionUniqueName : il nome univoco di Importa soluzione di esempio delle risorse Web creato nell'esempio. Il valore è 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);
}
Non è necessario pubblicare le risorse Web quando vengono create. È necessario pubblicarle quando vengono aggiornate.
Vedere anche
Esempio: utilità risorsa Web
Metodi e messaggi dell'entità WebResource
Risorse Web per Microsoft Dynamics 365
Microsoft Dynamics 365
© 2017 Microsoft. Tutti i diritti sono riservati. Copyright