Merk
Tilgang til denne siden krever autorisasjon. Du kan prøve å logge på eller endre kataloger.
Tilgang til denne siden krever autorisasjon. Du kan prøve å endre kataloger.
Serverlogikk inneholder innebygde objekter under servernavneområdet. Disse objektene forenkler utviklingen ved å la deg logge meldinger, ringe eksterne tjenester, arbeide med dataverse eller få tilgang til forespørselsdetaljer.
HttpClient
Bruk HTTP-klienten til å integrere med eksterne tjenester ved å sende HTTP-forespørsler.
Notat
For øyeblikket støtter serverlogikk bare application/json, text/htmlog application/x-www-form-urlencoded innholdstyper i forespørselsteksten.
Eksempler
HTTP GET
let url = "https://contoso.com/objects";
let header = { client_id: "00001111-aaaa-2222-bbbb-3333cccc4444" };
let response = await Server.Connector.HttpClient.GetAsync(url, header);
HTTP-INNLEGG
let url = "https://contoso.com/objects";
let body = JSON.stringify({ name: "Sample Account" });
let header = { client_id: "00001111-aaaa-2222-bbbb-3333cccc4444" };
let contentType = "application/json";
// Make the POST request
let response = await Server.Connector.HttpClient.PostAsync(url, body, header, contentType);
HTTP PUT
let url = "https://contoso.com/objects/6";
let body = JSON.stringify({ name: "Updated Sample Account" });
let header = { client_id: "00001111-aaaa-2222-bbbb-3333cccc4444" };
let contentType = "application/json";
// Make the PUT request
let response = await Server.Connector.HttpClient.PutAsync(url, body, header, contentType);
HTTP-OPPDATERING
let url = "https://contoso.com/objects/6";
let body = JSON.stringify({ name: "{\"capacity\": \"2 TB\"}" });
let header = { client_id: "00001111-aaaa-2222-bbbb-3333cccc4444" };
let contentType = "application/json";
// Make the PATCH request
let response = await Server.Connector.HttpClient.PatchAsync(url, body, header, contentType);
HTTP DELETE
let url = "https://contoso.com/objects/6";
let header = { contentType: "application/json" };
let response = await Server.Connector.HttpClient.DeleteAsync(url, header);
Eksempel: Svar
{
"StatusCode": 200,
"Body": "JsonString",
"IsSuccessStatusCode": true,
"ReasonPhrase": "OK",
"ServerError": false,
"ServerErrorMessage": null,
"Headers": {
"Transfer-Encoding": "chunked",
"Connection": "keep-alive",
"Server": "",
"Content-Type": "application/json"
}
}
Nettstedinnstilling
Lar deg lese verdier for områdeinnstilling for gjeldende nettsted.
Notat
Ikke lagre hemmeligheter, for eksempel API-nøkler eller legitimasjon, direkte i serverlogikk. I stedet lagrer du dem sikkert i Azure Key Vault, henter dem gjennom miljøvariabler og refererer til dem ved hjelp av nettstedsinnstillinger.
Eksempel
Server.SiteSetting.Get("Search/Enabled");
EnvironmentVariable
Leser verdien for en miljøvariabel.
Eksempel
Server.EnvironmentVariable.get("SITEPATH");
Nettsted
Gir detaljer om gjeldende nettstedsoppføring i Dataverse.
Eksempel
Server.Website.adx_primarydomain;
Bruker
Gir detaljer om den påloggede brukeren. Returnerer null hvis anonym.
Eksempel
Server.User.fullname;
Dataverse
Server.Connector.Dataverse Bruk objektet til å utføre CRUD-operasjoner på dataverse tabeller og aktivere egendefinerte API-er.
Notat
- Når du refererer til Dataverse-tabeller i koden, bruker du EntitySetName. Hvis du for eksempel vil ha tilgang til
accounttabellen, bruker du EntitySetNameaccounts.
CreateRecord
Opprett ny post.
Server.Connector.Dataverse.CreateRecord(string entitySetName, string payload)
Eksempel
Server.Connector.Dataverse.CreateRecord("accounts", "{\"name\": \"Contoso Ltd.\", \"telephone1\": \"555-555-0100\", \"websiteurl\": \"https://contoso.com\"}");
Hent oppføring
Henter én post etter ID.
Server.Connector.Dataverse.RetrieveRecord(string entitySetName, string id)
Server.Connector.Dataverse.RetrieveRecord(string entitySetName, string id, string options)
Server.Connector.Dataverse.RetrieveRecord(string entitySetName, string id, string options, bool skipCache)
Eksempel
Server.Connector.Dataverse.RetrieveRecord("accounts", "00000000-0000-0000-0000-000000000001", "$select=name,telephone1");
RetrieveMultipleRecords
Henter en samling med poster.
Server.Connector.Dataverse.RetrieveMultipleRecords(string entitySetName)
Server.Connector.Dataverse.RetrieveMultipleRecords(string entitySetName, string options)
Server.Connector.Dataverse.RetrieveMultipleRecords(string entitySetName, string options, bool skipCache)
Eksempel
Server.Connector.Dataverse.RetrieveMultipleRecords("accounts", "$select=name,emailaddress1&$top=3");
Oppdater opptak
Oppdaterer en eksisterende post etter ID.
Server.Connector.Dataverse.UpdateRecord(string entitySetName, string id, string payload)
Eksempel
Server.Connector.Dataverse.UpdateRecord("accounts", "00000000-0000-0000-0000-000000000001", "{ \"telephone1\": \"555-555-0100\" }");
Slett post
Sletter en post etter ID.
Server.Connector.Dataverse.DeleteRecord(string entitySetName, string id)
Eksempel
Server.Connector.Dataverse.DeleteRecord("accounts", "00000000-0000-0000-0000-000000000001");
InvokeCustomApi
Server.Connector.Dataverse.InvokeCustomApi(string httpMethod, string url, string payload = null)
Aktiver en bundet funksjon:
Server.Connector.Dataverse.InvokeCustomApi("get", "accounts(00000000-0000-0000-0000-000000000001)/Microsoft.Dynamics.CRM.new_CustomBoundFunction");
Aktiver en bundet handling:
Server.Connector.Dataverse.InvokeCustomApi("post", "accounts(00000000-0000-0000-0000-000000000001)/Microsoft.Dynamics.CRM.new_CustomBoundAction", "{ \"parameter1\": \"value1\" }");
Aktiver en ubundet handling:
Server.Connector.Dataverse.InvokeCustomApi("post", "new_Action", "{ \"parameter1\": \"value1\" }");
Eksempel: Svar
{
"StatusCode": 204,
"Body": "",
"IsSuccessStatusCode": true,
"ReasonPhrase": "No Content",
"ServerError": false,
"ServerErrorMessage": null,
"Headers": {
"x-ms-cds-service-request-id": "00001111-aaaa-2222-bbbb-3333cccc4444"
}
}
Loggfører
Bruk loggeren til å skrive diagnosedata som du kan vise i utvidelsen DevTools.
Eksempel:
Server.Logger.Log("Information message");
Server.Logger.Warn("Warning message");
Server.Logger.Error("Error message");
Kontekst
Objektet Server.Context inneholder informasjon om aktivering av gjeldende serverlogikk. De tilgjengelige egenskapene avhenger av om serverlogikken ble startet via en HTTP-forespørsel eller fra en flytende mal.
Egenskaper
| Navn | Tilgjengelig for | Beskrivelse |
|---|---|---|
ActivityId |
HTTP og Liquid | Unik identifikator for aktivering av serverlogikk. Bruk denne verdien til å koordinere logger og feilsøke en operasjon. |
Body |
HTTP | Brødtekst for rå HTTP-forespørsel. |
FunctionName |
HTTP og Liquid | Navnet på JavaScript-funksjonen som aktiveres. For en flytende aktivering tilsvarer denne verdien parameteren operationserverlogic for koden. |
Headers |
HTTP | HTTP-forespørselshoder. |
HttpMethod |
HTTP | HTTP-forespørselsmetode, for eksempel GET, POST, PUT, PATCHeller DELETE. |
Input |
Liquid | Inndatastreng angitt gjennom parameteren input for serverlogic Liquid-koden. Når inndataene inneholder strukturerte data, analyserer du dem som JSON før du bruker dem. |
QueryParameters |
HTTP | Spørringsstrengparametere fra HTTP-forespørselen. |
ServerLogicName |
HTTP og Liquid | Navnet på serverlogikkposten som aktiveres. |
Url |
HTTP | Fullstendig URL-adresse for HTTP-forespørselen. |
Access HTTP-forespørselskontekst
Følgende eksempel leser spørringsparameteren id når serverlogikk aktiveres gjennom en HTTP-forespørsel:
var id = Server.Context.QueryParameters["id"];
Du kan også få tilgang til metadata for forespørsel:
function getRequestInformation() {
return JSON.stringify({
activityId: Server.Context.ActivityId,
functionName: Server.Context.FunctionName,
httpMethod: Server.Context.HttpMethod,
serverLogicName: Server.Context.ServerLogicName,
url: Server.Context.Url
});
}
Access Liquid-aktiveringskontekst
Når serverlogikk aktiveres fra Liquid, brukes Server.Context.Input til å lese verdien som er angitt gjennom kodens input parameter.
Følgende liquid passerer for eksempel JSON-inndata:
{% assign inputData = '{"category":"active","maximumResults":5}' %}
{% serverlogic output: result, name: 'customer-summary', operation: 'getSummary', input: inputData %}
Serverlogikkoperasjonen kan analysere inndata og få tilgang til informasjon om flytende aktivering:
function getSummary() {
var input = JSON.parse(Server.Context.Input || "{}");
return JSON.stringify({
category: input.category,
maximumResults: input.maximumResults,
activityId: Server.Context.ActivityId,
functionName: Server.Context.FunctionName,
serverLogicName: Server.Context.ServerLogicName
});
}
Neste trinn:
Slik samhandler du med dataverse tabeller ved hjelp av serverlogikk