Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Serverlogik tillhandahåller inbyggda objekt under servernamnområdet. Dessa objekt förenklar utvecklingen genom att du kan logga meddelanden, anropa externa tjänster, arbeta med Dataverse eller få åtkomst till information om begäranden.
HttpClient (på engelska)
Använd HTTP-klienten för att integrera med externa tjänster genom att skicka HTTP-begäranden.
Anmärkning
För närvarande stöder serverlogik endast application/jsoninnehållstyperna , text/htmloch application/x-www-form-urlencoded i begärandetexten.
Examples
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 PATCH
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);
Exempel: 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"
}
}
SiteSetting
Gör att du kan läsa webbplatsinställningsvärden för den aktuella webbplatsen.
Anmärkning
Lagra inte hemligheter, till exempel API-nycklar eller autentiseringsuppgifter, direkt i serverlogik. Lagra dem i stället på ett säkert sätt i Azure Key Vault, hämta dem via miljövariabler och referera till dem med hjälp av webbplatsinställningar.
Example
Server.SiteSetting.Get("Search/Enabled");
EnvironmentVariable
Läser värdet för en miljövariabel.
Example
Server.EnvironmentVariable.get("SITEPATH");
Webbplats
Innehåller information om den aktuella webbplatsposten i Dataverse.
Example
Server.Website.adx_primarydomain;
User
Innehåller information om den inloggade användaren. Returnerar null om det är anonymt.
Example
Server.User.fullname;
Dataverse (på engelska)
Använd - Server.Connector.Dataverse objektet för att utföra CRUD-åtgärder i Dataverse-tabeller och anropa anpassade API:er.
Anmärkning
- När du refererar till Dataverse-tabeller i koden använder du EntitySetName. Om du till exempel vill komma åt
accounttabellen använder du EntitySetNameaccounts.
Skapa post
Skapa ny post.
Server.Connector.Dataverse.CreateRecord(string entitySetName, string payload)
Example
Server.Connector.Dataverse.CreateRecord("accounts", "{\"name\": \"Contoso Ltd.\", \"telephone1\": \"555-555-0100\", \"websiteurl\": \"https://contoso.com\"}");
RetrieveRecord (på engelska)
Hämtar en enskild 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)
Example
Server.Connector.Dataverse.RetrieveRecord("accounts", "00000000-0000-0000-0000-000000000001", "$select=name,telephone1");
RetrieveMultipleRecords
Hämtar 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)
Example
Server.Connector.Dataverse.RetrieveMultipleRecords("accounts", "$select=name,emailaddress1&$top=3");
UpdateRecord (på engelska)
Uppdaterar en befintlig post efter ID.
Server.Connector.Dataverse.UpdateRecord(string entitySetName, string id, string payload)
Example
Server.Connector.Dataverse.UpdateRecord("accounts", "00000000-0000-0000-0000-000000000001", "{ \"telephone1\": \"555-555-0100\" }");
Ta bortSpela in
Tar bort en post efter ID.
Server.Connector.Dataverse.DeleteRecord(string entitySetName, string id)
Example
Server.Connector.Dataverse.DeleteRecord("accounts", "00000000-0000-0000-0000-000000000001");
InvokeCustomApi
Server.Connector.Dataverse.InvokeCustomApi(string httpMethod, string url, string payload = null)
Anropa en bunden funktion:
Server.Connector.Dataverse.InvokeCustomApi("get", "accounts(00000000-0000-0000-0000-000000000001)/Microsoft.Dynamics.CRM.new_CustomBoundFunction");
Anropa en bunden åtgärd:
Server.Connector.Dataverse.InvokeCustomApi("post", "accounts(00000000-0000-0000-0000-000000000001)/Microsoft.Dynamics.CRM.new_CustomBoundAction", "{ \"parameter1\": \"value1\" }");
Anropa en obundna åtgärd:
Server.Connector.Dataverse.InvokeCustomApi("post", "new_Action", "{ \"parameter1\": \"value1\" }");
Exempel: 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
Använd loggaren för att skriva diagnostikmeddelanden som du kan visa i DevTools-tillägget.
Exempel:
Server.Logger.Log("Information message");
Server.Logger.Warn("Warning message");
Server.Logger.Error("Error message");
Context
Objektet Server.Context innehåller information om den aktuella serverlogikanropet. Vilka egenskaper som är tillgängliga beror på om serverlogik anropades via en HTTP-begäran eller från en Liquid-mall.
Egenskaper
| Namn | Tillgänglig för | Beskrivning |
|---|---|---|
ActivityId |
HTTP och Liquid | Unik identifierare för serverlogikanropet. Använd det här värdet för att korrelera loggar och felsöka en åtgärd. |
Body |
HTTP | Rå HTTP-begärandetext. |
FunctionName |
HTTP och Liquid | Namnet på den JavaScript-funktion som anropas. För ett Liquid-anrop motsvarar det här värdet parametern operation för taggen serverlogic . |
Headers |
HTTP | HTTP-begärandehuvuden. |
HttpMethod |
HTTP | HTTP-begärandemetod, till exempel GET, POST, PUT, PATCHeller DELETE. |
Input |
Vätska | Indatasträng som tillhandahålls via parametern input för liquid-taggen serverlogic . När indata innehåller strukturerade data parsar du dem som JSON innan du använder dem. |
QueryParameters |
HTTP | Frågesträngsparametrar från HTTP-begäran. |
ServerLogicName |
HTTP och Liquid | Namnet på den serverlogikpost som anropas. |
Url |
HTTP | Fullständig URL för HTTP-begäran. |
Åtkomst till HTTP-begärandekontext
I följande exempel läss frågeparametern id när serverlogik anropas via en HTTP-begäran:
var id = Server.Context.QueryParameters["id"];
Du kan också komma åt metadata för begäran:
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-anropskontext
När serverlogik anropas från Liquid kan du använda Server.Context.Input för att läsa det värde som anges via taggens input parameter.
Följande Liquid skickar till exempel JSON-indata:
{% assign inputData = '{"category":"active","maximumResults":5}' %}
{% serverlogic output: result, name: 'customer-summary', operation: 'getSummary', input: inputData %}
Serverlogikåtgärden kan parsa indata och åtkomstinformation om Liquid-anropet:
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ästa steg
Interagera med Dataverse-tabeller med hjälp av serverlogik