Bemærk
Adgang til denne side kræver godkendelse. Du kan prøve at logge på eller ændre mapper.
Adgang til denne side kræver godkendelse. Du kan prøve at ændre mapper.
Serverlogik leverer indbyggede objekter under servernavneområdet. Disse objekter forenkler udviklingen ved at lade dig logge meddelelser, ringe til eksterne tjenester, arbejde med Dataverse eller få adgang til oplysninger om anmodninger.
HttpClient
Brug HTTP-klienten til at integrere med eksterne tjenester ved at sende HTTP-anmodninger.
Bemærkning
I øjeblikket understøtter serverlogik kun application/json, text/htmlog application/x-www-form-urlencoded indholdstyper i anmodningens brødtekst.
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 POST
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-PROGRAMRETTELSE
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"
}
}
Indstillinger for websted
Giver dig mulighed for at læse værdier for webstedsindstilling for det aktuelle websted.
Bemærkning
Gem ikke hemmeligheder, f.eks. API-nøgler eller legitimationsoplysninger, direkte i serverlogik. I stedet skal du gemme dem sikkert i Azure Key Vault, kilde dem via miljøvariabler og referere til dem ved hjælp af webstedsindstillinger.
Eksempel
Server.SiteSetting.Get("Search/Enabled");
Miljøvariabel
Læser værdien af en miljøvariabel.
Eksempel
Server.EnvironmentVariable.get("SITEPATH");
Hjemmeside
Indeholder oplysninger om den aktuelle webstedspost i Dataverse.
Eksempel
Server.Website.adx_primarydomain;
Bruger
Indeholder oplysninger om den bruger, der er logget på. Returnerer null, hvis det er anonymt.
Eksempel
Server.User.fullname;
Dataverse
Brug objektet Server.Connector.Dataverse til at udføre CRUD-handlinger på Dataverse-tabeller og aktivere brugerdefinerede API'er.
Bemærkning
- Når du refererer til Dataverse-tabeller i din kode, skal du bruge EntitySetName. Hvis du f.eks. vil have adgang til
accounttabellen, skal du bruge EntitySetNameaccounts.
Opret post
Opret 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 post
Henter en enkelt post efter 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 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");
Opdater Optag
Opdaterer en eksisterende post efter 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\" }");
Slet post
Sletter en post efter 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)
Aktivér en bundet funktion:
Server.Connector.Dataverse.InvokeCustomApi("get", "accounts(00000000-0000-0000-0000-000000000001)/Microsoft.Dynamics.CRM.new_CustomBoundFunction");
Aktivér en bundet handling:
Server.Connector.Dataverse.InvokeCustomApi("post", "accounts(00000000-0000-0000-0000-000000000001)/Microsoft.Dynamics.CRM.new_CustomBoundAction", "{ \"parameter1\": \"value1\" }");
Aktivér 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"
}
}
Logger
Brug logføringen til at skrive diagnosticeringsmeddelelser, som du kan få vist i udvidelsen DevTools.
Eksempel:
Server.Logger.Log("Information message");
Server.Logger.Warn("Warning message");
Server.Logger.Error("Error message");
Kontekst
Objektet Server.Context indeholder oplysninger om den aktuelle aktivering af serverlogik. De tilgængelige egenskaber afhænger af, om serverlogikken blev aktiveret via en HTTP-anmodning eller fra en Liquid-skabelon.
Egenskaber
| Name | Tilgængelig for | Beskrivelse |
|---|---|---|
ActivityId |
HTTP og flydende | Entydigt id for aktivering af serverlogik. Brug denne værdi til at korrelere logge og foretage fejlfinding af en handling. |
Body |
HTTP | Rå http-anmodningsbrødtekst. |
FunctionName |
HTTP og flydende | Navnet på den JavaScript-funktion, der aktiveres. For en Liquid-aktivering svarer denne værdi til operation parameteren for serverlogic koden. |
Headers |
HTTP | HTTP-anmodningsheadere. |
HttpMethod |
HTTP | HTTP-anmodningsmetode, f.eks GET. , POST, PUT, PATCHeller DELETE. |
Input |
Liquid | Inputstrengen input , der leveres via parameteren for serverlogic liquid-koden. Når inputtet indeholder strukturerede data, skal du fortolke det som JSON, før du bruger det. |
QueryParameters |
HTTP | Forespørgselsstrengparametre fra HTTP-anmodningen. |
ServerLogicName |
HTTP og flydende | Navnet på den serverlogikpost, der aktiveres. |
Url |
HTTP | Fuldstændig URL-adresse til HTTP-anmodningen. |
Få adgang til HTTP-anmodningskontekst
I følgende eksempel læses forespørgselsparameteren id , når serverlogik aktiveres via en HTTP-anmodning:
var id = Server.Context.QueryParameters["id"];
Du kan også få adgang til anmodningsmetadata:
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
});
}
Kontekst for adgang til flydende aktivering
Når serverlogik aktiveres fra Liquid, skal du bruge Server.Context.Input til at læse den værdi, der leveres via kodens input parameter.
Følgende Liquid overfører f.eks. JSON-input:
{% assign inputData = '{"category":"active","maximumResults":5}' %}
{% serverlogic output: result, name: 'customer-summary', operation: 'getSummary', input: inputData %}
Handlingen serverlogik kan fortolke input- og adgangsoplysningerne om aktiveringen af Liquid:
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
});
}
Næste trin
Sådan interagerer du med Dataverse-tabeller ved hjælp af serverlogik