Muistiinpano
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää kirjautua sisään tai vaihtaa hakemistoa.
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää vaihtaa hakemistoa.
Palvelinlogiikka tarjoaa palvelimen nimitilan alaisia sisäisiä objekteja. Nämä objektit yksinkertaistavat kehitystä, koska voit kirjata lokeja, kutsua ulkoisia palveluita, käsitellä Dataversea tai käyttää pyyntötietoja.
HttpClient
HTTP-asiakasohjelman avulla voit integroida ulkoisiin palveluihin lähettämällä HTTP-pyyntöjä.
Muistio
Tällä hetkellä palvelinlogiikka tukee vain application/json-, text/html- ja application/x-www-form-urlencoded -sisältötyyppejä pyynnön leipätekstissä.
Esimerkit
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);
Esimerkki: Vastaus
{
"StatusCode": 200,
"Body": "JsonString",
"IsSuccessStatusCode": true,
"ReasonPhrase": "OK",
"ServerError": false,
"ServerErrorMessage": null,
"Headers": {
"Transfer-Encoding": "chunked",
"Connection": "keep-alive",
"Server": "",
"Content-Type": "application/json"
}
}
Sivuston asetukset
Tämän avulla voit lukea sivuston asetusarvoja nykyiselle verkkosivustolle.
Muistio
Älä tallenna salaisia salaisuustietoja, kuten ohjelmointirajapinnan avaimia tai tunnistetietoja, suoraan palvelinlogiikkaan. Tallenna ne turvallisesti Azure Key Vault, hanki ne ympäristömuuttujien kautta ja viittaa niihin sivuston asetusten avulla.
Esimerkki
Server.SiteSetting.Get("Search/Enabled");
Ympäristömuuttuja
Lukee ympäristömuuttujan arvon.
Esimerkki
Server.EnvironmentVariable.get("SITEPATH");
Verkkosivusto
Antaa tiedot nykyisestä sivustotietueesta Dataversessa.
Esimerkki
Server.Website.adx_primarydomain;
Käyttäjä
Antaa kirjautuneen käyttäjän tiedot. Palauttaa tyhjäarvon, jos se on anonyymi.
Esimerkki
Server.User.fullname;
Dataverse
Objektin Server.Connector.Dataverse avulla voit suorittaa CRUD-toimintoja Dataverse-taulukoille ja käynnistää mukautettuja ohjelmointirajapintoja.
Muistio
- Kun viittaat koodissasi Dataverse-taulukoihin, käytä EntitySetName-nimeä. Jos haluat esimerkiksi käyttää taulukkoa
account, käytä EntitySetName-nimeäaccounts.
Luo tietue
Luo uusi tietue.
Server.Connector.Dataverse.CreateRecord(string entitySetName, string payload)
Esimerkki
Server.Connector.Dataverse.CreateRecord("accounts", "{\"name\": \"Contoso Ltd.\", \"telephone1\": \"555-555-0100\", \"websiteurl\": \"https://contoso.com\"}");
Hae tietue
Hakee yksittäisen tietueen tunnuksen mukaan.
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)
Esimerkki
Server.Connector.Dataverse.RetrieveRecord("accounts", "00000000-0000-0000-0000-000000000001", "$select=name,telephone1");
RetrieveMultipleRecords
Hakee tietuekokoelman.
Server.Connector.Dataverse.RetrieveMultipleRecords(string entitySetName)
Server.Connector.Dataverse.RetrieveMultipleRecords(string entitySetName, string options)
Server.Connector.Dataverse.RetrieveMultipleRecords(string entitySetName, string options, bool skipCache)
Esimerkki
Server.Connector.Dataverse.RetrieveMultipleRecords("accounts", "$select=name,emailaddress1&$top=3");
Päivitä ennätys
Päivittää olemassa olevan tietueen tunnuksen mukaan.
Server.Connector.Dataverse.UpdateRecord(string entitySetName, string id, string payload)
Esimerkki
Server.Connector.Dataverse.UpdateRecord("accounts", "00000000-0000-0000-0000-000000000001", "{ \"telephone1\": \"555-555-0100\" }");
Poista tietue
Poistaa tietueen tunnuksen mukaan.
Server.Connector.Dataverse.DeleteRecord(string entitySetName, string id)
Esimerkki
Server.Connector.Dataverse.DeleteRecord("accounts", "00000000-0000-0000-0000-000000000001");
KutsuCustomApi
Server.Connector.Dataverse.InvokeCustomApi(string httpMethod, string url, string payload = null)
Kutsu sidottua funktiota:
Server.Connector.Dataverse.InvokeCustomApi("get", "accounts(00000000-0000-0000-0000-000000000001)/Microsoft.Dynamics.CRM.new_CustomBoundFunction");
Kutsu sidottu toiminto:
Server.Connector.Dataverse.InvokeCustomApi("post", "accounts(00000000-0000-0000-0000-000000000001)/Microsoft.Dynamics.CRM.new_CustomBoundAction", "{ \"parameter1\": \"value1\" }");
Kutsu ei-sidottu toiminto:
Server.Connector.Dataverse.InvokeCustomApi("post", "new_Action", "{ \"parameter1\": \"value1\" }");
Esimerkki: Vastaus
{
"StatusCode": 204,
"Body": "",
"IsSuccessStatusCode": true,
"ReasonPhrase": "No Content",
"ServerError": false,
"ServerErrorMessage": null,
"Headers": {
"x-ms-cds-service-request-id": "00001111-aaaa-2222-bbbb-3333cccc4444"
}
}
Metsuri
Lokitoiminnon avulla voit kirjoittaa diagnostiikkaviestejä, joita voit tarkastella DevTools-laajennuksessa.
Esimerkki:
Server.Logger.Log("Information message");
Server.Logger.Warn("Warning message");
Server.Logger.Error("Error message");
Konteksti
- Server.Context objekti antaa tietoja palvelinlogiikan nykyisestä kutsusta. Käytettävissä olevat ominaisuudet riippuvat siitä, käynnistettiinkö palvelinlogiikka HTTP-pyynnöllä vai Liquid-mallilla.
Ominaisuudet
| Nimi | Käytettävissä | Description |
|---|---|---|
ActivityId |
HTTP ja Liquid | Palvelimen logiikkakutsun yksilöllinen tunnus. Käytä tätä arvoa lokien korreloimiseen ja toiminnon vianmääritykseen. |
Body |
HTTP | HTTP-pyynnön raaka leipäteksti. |
FunctionName |
HTTP ja Liquid | Käynnistettyn JavaScript-funktion nimi. Liquid-kutsussa tämä arvo vastaa operation tunnisteen parametria serverlogic . |
Headers |
HTTP | HTTP-pyyntöotsikot. |
HttpMethod |
HTTP | HTTP-pyyntömenetelmä, kuten GET, POST, PUT, PATCHtai DELETE. |
Input |
Liquid | Liquid-tunnisteen input parametrin serverlogic kautta annettu syötemerkkijono. Kun syöte sisältää jäsennettyjä tietoja, jäsennä se JSON-muotoon ennen sen käyttämistä. |
QueryParameters |
HTTP | HTTP-pyynnön kyselymerkkijonoparametrit. |
ServerLogicName |
HTTP ja Liquid | Käynnistettyn palvelimen logiikkatietueen nimi. |
Url |
HTTP | HTTP-pyynnön täydellinen URL-osoite. |
HTTP-pyyntökontekstin käyttäminen
Seuraavassa esimerkissä lukee kyselyparametri, id kun palvelinlogiikka käynnistetään HTTP-pyynnöllä:
var id = Server.Context.QueryParameters["id"];
Voit myös käyttää pyynnön metatietoja:
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
});
}
Liquid-kutsukontekstin käyttö
Kun palvelinlogiikka käynnistetään Liquid-funktiosta, lue -parametrin kautta annettu arvo -parametrin input avullaServer.Context.Input.
Esimerkiksi seuraava Liquid välittää JSON-syötteen:
{% assign inputData = '{"category":"active","maximumResults":5}' %}
{% serverlogic output: result, name: 'customer-summary', operation: 'getSummary', input: inputData %}
Palvelimen logiikkatoiminto voi jäsentää Liquid-kutsun syöte- ja käyttöoikeustiedot:
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
});
}
Seuraava vaihe
Dataverse-taulukoiden käsitteleminen palvelinlogiikan avulla