Zdieľať cez


Implementácia koncového serveru služby Microsoft Fabric

Tento odkladací priestor na vývoj vyťaženia služby Microsoft Fabric je východiskovým bodom na vytváranie aplikácií, ktoré vyžadujú integráciu s rôznymi službami a integráciu s architektúrou lakehouse. Tento článok vám pomôže nastaviť prostredie a nakonfigurovať potrebné súčasti, aby ste mohli začať. V článku sú načrtnuté kľúčové súčasti a ich roly v architektúre.

Frontend

Rozhranie je miesto, kde môžete spravovať používateľské prostredie (UX) a správanie. Komunikuje s klientskym portálom služby Fabric prostredníctvom prvku iFrame, čím uľahčuje bezproblémovú interakciu.

Ďalšie informácie nájdete v téme Súprava Microsoft Fabric Workload Development Kit.

Koncový server

Koncový server uchováva údaje aj metaúdaje. Používa operácie Create, Read, Update a Delete (CRUD) na vytváranie položiek a metaúdajov vyťaženia a spúšťa úlohy na vyplnenie údajov v úložisku. Komunikácia medzi koncovým a koncovým serverom sa uskutočňuje prostredníctvom verejných rozhraní API.

Azure Relay a DevGateway

Služba Azure Relay umožňuje komunikáciu medzi lokálnym vývojovým prostredím a koncovým serverom služby Fabric v režime vývojára. V režime vývojára funguje vyťaženie v počítači vývojára.

Pomôcka DevGateway má dve roly:

  • Spracováva stranu vyťaženia kanála Azure Relay a spravuje registráciu lokálnej inštancie vyťaženia so službou Fabric v kontexte konkrétneho pracovného priestoru. Nástroj spracováva zrušenie registrácie po odpojení kanála.
  • Funguje so službou Azure Relay na volania API vyťaženia kanála zo služby Fabric do vyťaženia.

Volania rozhrania API riadenia vyťaženia sa vykonávajú priamo z vyťaženia do služby Fabric. Kanál Azure Relay sa pre volania nevyžaduje.

Integrácia lakehouse

Architektúra vývojovej súpravy vyťaženia je bezproblémovo integrovaná s architektúrou lakehouse pre operácie, ako je ukladanie, čítanie a načítavanie údajov. Interakciu uľahčuje služba Azure Relay a súprava Fabric SDK, čo zabezpečuje bezpečnú a overenú komunikáciu. Ďalšie informácie nájdete v téme Práca so zákazníckymi údajmi.

Overenie a zabezpečenie

Microsoft Entra ID sa používa na zabezpečené overovanie, pričom zabezpečuje, aby všetky interakcie v rámci architektúry boli autorizované a zabezpečené.

Prehľad vývojových súprav poskytuje náhľad do našej architektúry. Ďalšie informácie o spôsobe konfigurácie projektov, pokynoch na overenie a začatí práce nájdete v nasledujúcich článkoch:

Diagram znázorňujúci integráciu súpravy Fabric SDK s fabricom.

Klientske spojenie vytvára komunikáciu s klientskym portálom služby Fabric prostredníctvom prvku iFrame. Portál zase interaguje s koncovým serverom služby Fabric tým, že volá svoje exponované verejné rozhrania API.

Na interakcie medzi koncovým vývojovým poľom a koncovým serverom služby Fabric slúži služba Azure Relay ako kanál. Navyše klientske vývojové pole sa bezproblémovo integruje s lakehouse. Komunikáciu uľahčuje služba Azure Relay a súprava Fabric Software Development Kit (SDK) nainštalovaná do serverového vývojového poľa.

Overovanie všetkých komunikácií v rámci týchto komponentov je zabezpečené prostredníctvom spoločnosti Microsoft Entra. Microsoft Entra poskytuje zabezpečené a overené prostredie na interakcie medzi klientskym, koncovým serverom, službou Azure Relay, fabric SDK a lakehouse.

Požiadavky

Uistite sa, že Správca balíkov NuGet je integrovaná do vašej inštalácie Visual Studia. Tento nástroj sa vyžaduje pri zjednodušenom spravovaní externých knižníc a balíkov nevyhnutných pre náš projekt.

Správa balíkov NuGet

  • <NuspecFile>Packages\manifest\ManifestPackageDebug.nuspec</NuspecFile> a <NuspecFile>Packages\manifest\ManifestPackageRelease.nuspec</NuspecFile>: Tieto vlastnosti špecifikujú cestu k súborom NuSpec používaným na vytvorenie balíka NuGet pre režimy ladenia a vydania. Súbor NuSpec obsahuje metaúdaje o balíku, ako je napríklad jeho ID, verzia, závislosti a ďalšie relevantné informácie.

  • <GeneratePackageOnBuild>true</GeneratePackageOnBuild>: Ak je nastavená na truehodnotu , táto vlastnosť nariaďuje procesu vytvárania automaticky vygenerovať balík NuGet počas každej zostavy. Táto vlastnosť je užitočná na zabezpečenie toho, že balík je vždy aktuálny a obsahuje najnovšie zmeny v projekte.

  • <IsPackable>true</IsPackable>: Keď je nastavená na truehodnotu , táto vlastnosť indikuje, že projekt môže byť zabalný do balíka NuGet. Byť zbaliteľný je základnou vlastnosťou pre projekty, ktoré sú určené na vytváranie balíkov NuGet počas procesu vytvárania.

Vygenerovaný balík NuGet pre režim ladenia sa po procese vytvárania nachádza v adresári src\bin\Debug .

Pri práci v cloudovom režime môžete zmeniť konfiguráciu zostavy Visual Studia na položku Release (Vydanie ) a vytvoriť svoj balík. Vygenerovaný balík sa nachádza v adresári src\bin\Release . Ďalšie informácie nájdete v téme Sprievodca prácou v cloudovom režime.

Závislosti

  • Ukážka serverovej brány Nabaľová doska závisí od nasledujúcich balíkov Azure SDK:

    • Azure.Core
    • Azure.Identity
    • Azure.Storage.Files.DataLake
    • Balík microsoft identity

Ak chcete nakonfigurovať Správca balíkov NuGet, pred začatím procesu vytvárania zadajte cestu do časti Zdroje balíkov.

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>net7.0</TargetFramework>
    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
    <BuildDependsOn>PreBuild</BuildDependsOn>
    <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
    <IsPackable>true</IsPackable>
  </PropertyGroup>
  
  <PropertyGroup Condition="'$(Configuration)' == 'Release'">
    <NuspecFile>Packages\manifest\ManifestPackageRelease.nuspec</NuspecFile>
  </PropertyGroup>

  <PropertyGroup Condition="'$(Configuration)' == 'Debug'">
    <NuspecFile>Packages\manifest\ManifestPackageDebug.nuspec</NuspecFile>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Azure.Core" Version="1.38.0" />
    <PackageReference Include="Azure.Identity" Version="1.11.0" />
    <PackageReference Include="Azure.Storage.Files.DataLake" Version="12.14.0" />
    <PackageReference Include="Microsoft.AspNet.WebApi.Client" Version="5.2.9" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="7.0.5" />
    <PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="7.0.0" />
    <PackageReference Include="Microsoft.Identity.Client" Version="4.60.3" />
    <PackageReference Include="Microsoft.IdentityModel.Protocols" Version="6.30.1" />
    <PackageReference Include="Microsoft.IdentityModel.Protocols.OpenIdConnect" Version="6.30.1" />
    <PackageReference Include="Microsoft.IdentityModel.Tokens" Version="6.30.1" />
    <PackageReference Include="Swashbuckle.AspNetCore" Version="6.5.0" />
  </ItemGroup>

  <ItemGroup>
    <Folder Include="Properties\ServiceDependencies\" />
  </ItemGroup>

  <Target Name="PreBuild" BeforeTargets="PreBuildEvent">
    <Exec Command="powershell.exe -ExecutionPolicy Bypass -File ValidationScripts\RemoveErrorFile.ps1 -outputDirectory ValidationScripts\" />
    <Exec Command="powershell.exe -ExecutionPolicy Bypass -File ValidationScripts\ManifestValidator.ps1 -inputDirectory .\Packages\manifest\ -inputXml WorkloadManifest.xml -inputXsd WorkloadDefinition.xsd -outputDirectory ValidationScripts\" />
    <Exec Command="powershell.exe -ExecutionPolicy Bypass -File ValidationScripts\ItemManifestValidator.ps1 -inputDirectory .\Packages\manifest\ -inputXsd ItemDefinition.xsd -outputDirectory ValidationScripts\" />
    <Exec Command="powershell.exe -ExecutionPolicy Bypass -File ValidationScripts\ValidateNoDefaults.ps1 -outputDirectory ValidationScripts\" />
    <Error Condition="Exists('ValidationScripts\ValidationErrors.txt')" Text="Validation errors with either manifests or default values" File="ValidationScripts\ValidationErrors.txt" />
  </Target>

</Project>

Začať

Nastavenie ukážkového projektu vyťaženia v lokálnom počítači:

  1. Klonovanie odkladacieho priestoru: Spustite git clone https://github.com/microsoft/Microsoft-Fabric-workload-development-sample.git.

  2. Vo Visual Studiu 2022 otvorte riešenie.

  3. Nastavte registráciu aplikácie podľa nasledujúcich pokynov v kurze overenia. Skontrolujte, či vaše klientske aj serverové projekty majú potrebné nastavenie popísané v článku. Microsoft Entra sa používa na zabezpečené overovanie, ktoré pomáha zabezpečiť, aby všetky interakcie v rámci architektúry boli autorizované a zabezpečené.

  4. Aktualizujte základnú URL adresu služby Microsoft OneLake DFS. V závislosti od prostredia služby Fabric môžete aktualizovať hodnotu OneLakeDFSBaseURL v priečinku src\Constants . Predvolená hodnota je onelake.dfs.fabric.microsoft.com, ale MÔŽETE aktualizovať URL adresu tak, aby odrážala vaše prostredie. Ďalšie informácie o cestách DFS nájdete v dokumentácii k onelake.

  5. Nastavenie konfigurácie vyťaženia.

    1. Skopírujte workload-dev-mode.json zo src/Config do C:.
    2. V súbore workload-dev-mode.json aktualizujte nasledujúce polia tak, aby sa zhodovali s konfiguráciou:
      • WorkspaceGuid: Vaše ID pracovného priestoru. Túto hodnotu môžete nájsť v URL adrese prehliadača pri výbere pracovného priestoru v službe Fabric. Napríklad, https://app.powerbi.com/groups/<WorkspaceID>/.
      • ManifestPackageFilePath: Umiestnenie balíka manifestu. Pri vytváraní riešenia sa uloží balík manifestu v súbore src\bin\Debug. Ďalšie informácie o balíku manifestu nájdete ďalej v článku.
      • WorkloadEndpointURL: URL adresa koncového bodu vyťaženia.
    3. V súbore Packages/manifest/WorkloadManifest.xml aktualizujte nasledujúce polia tak, aby zodpovedali konfigurácii:
      • <AppId>: ID klienta (ID aplikácie) vyťaženia aplikácie Microsoft Entra.
      • <RedirectUri>: Identifikátory URI presmerovania. Túto hodnotu nájdete v registrácii aplikácie, ktorú ste vytvorili, v časti Overovanie.
      • <ResourceId>: Cieľová skupina prichádzajúcich tokenov Microsoft Entra. Tieto informácie nájdete v registrácii aplikácie, ktorú ste vytvorili, v časti Vystavenie rozhrania API.
    4. V súbore src/appsettings.json aktualizujte nasledujúce polia tak, aby zodpovedali konfigurácii:
      • PublisherTenantId: ID nájomníka vydavateľa vyťaženia.
      • ClientId: ID klienta (ID aplikácie) vyťaženia aplikácie Microsoft Entra.
      • ClientSecret: Tajný kód aplikácie Microsoft Entra pre vyťaženie.
      • Publikum: publikum pre prichádzajúce tokeny Microsoft Entra. Tieto informácie nájdete v registrácii aplikácie, ktorú ste vytvorili, v časti Vystavenie rozhrania API. Toto nastavenie sa nazýva aj identifikátor URI ID aplikácie.
  6. Vygenerujte balík manifestu.

    Ak chcete generovať súbor manifestu balíka, vytvorte Fabric_Extension_BE_Boilerplate. Zostava predstavuje proces s troma krokmi, ktorý generuje súbor manifestu balíka. Spustí sa v tomto postupe:

    1. Spúšťače ManifestValidator.ps1 na WorkloadManifest.xml v balíkoch\manifest/ a spúšťač ItemManifestValidator.ps1 vo všetkých položkách XMLs (napríklad Item1.xml) v packages\manifest/. Ak overenie zlyhá, vygeneruje sa súbor chyby. Overovacie skripty môžete zobraziť v ValidationScripts/.
    2. Ak existuje súbor chyby, zostava zlyhá s chybami overenia buď s manifestmi, alebo predvolenými hodnotami. Ak chcete zobraziť súbor chyby vo Visual Studiu, dvakrát kliknite na chybu vo výsledkoch overenia.
    3. Po úspešnom overení zbaľte WorkloadManifest.xml a Item1.xml súbory do súboru ManifestPackage.1.0.0.nupkg. Výsledný balík je v src\bin\Debug.

    Skopírujte súbor ManifestPackage.1.0.0.nupkg k ceste definovanej v konfiguračnom súbore workload-dev-mode.json.

  7. Program.cs je vstupný bod a skript pri spustení aplikácie. V tomto súbore môžete nakonfigurovať rôzne služby, inicializovať aplikáciu a spustiť webového hostiteľa.

  8. Vytvorte zostavu, aby ste zabezpečili, že váš projekt bude mať prístup k požadovaným závislostiam kompilácie a vykonávania.

  9. Stiahnutie DevGateway z Centra sťahovania softvéru spoločnosti Microsoft

  10. Spustite aplikáciu Microsoft.Fabric.Workload.DevGateway.exe a prihláste sa pomocou používateľa s oprávneniami správcu pracovného priestoru pre pracovný priestor zadaný v WorkspaceGuid poli workload-dev-mode.json.

    Snímka obrazovky stránky prihlásenia Microsoftu.

    Po overení môžu externé vyťaženia komunikovať s koncovým serverom služby Fabric prostredníctvom služby Azure Relay. Tento proces zahŕňa registráciu relé a správu komunikácie, ktorú uľahčuje určený uzol proxy. Balík obsahujúci manifest vyťaženia sa nahrá a publikuje.

    V tejto fáze fabric zistí vyťaženie a zahrnie aj svoju vyhradenú kapacitu.

    Možné chyby môžete sledovať v konzole.

    Ak sa nezobrazujú žiadne chyby, pripojenie sa vytvorí, registrácia sa úspešne spustí a manifest vyťaženia sa systematicky nahrá.

    Snímka obrazovky znázorňujúca načítanie pripojenia bez akýchkoľvek chýb.

  11. Vo Visual Studiu zmeňte svoj startupový projekt na projekt Kotleba a vyberte položku Spustiť.

    Snímka obrazovky znázorňujúca používateľské rozhranie pre spustenie projektu vo Visual Studiu.

Práca s projektom Ukážka kotla

Generovanie kódu

Na znázornenie spôsobu vytvorenia vyťaženia pomocou rozhraní REST API používame ukážku vyťaženia úložiskej knižnice C# ASP.NET Core. Ukážka začína generovanými úložiskami servera a triedami zmlúv na základe špecifikácie Swagger rozhrania API workload. Kód môžete vygenerovať pomocou niektorého z niekoľkých nástrojov generovania kódu Swagger. Ukážka Kotleba používa NSwag. Ukážka obsahuje skript príkazového riadka GenerateServerStub.cmd , ktorý zalomí generátor kódu NSwag. Skript má jeden parameter, čo je úplná cesta k inštalačnému adresáru NSwag. Skontroluje tiež súbor definície Swagger (swagger.json) a konfiguračný súbor (nswag.json) v priečinku .

Po spustení tohto skriptu sa vytvorí súbor v jazyku C# s názvom WorkloadAPI_Generated.cs. Obsah tohto súboru je možné logicky rozdeliť do troch častí, ako je vysvetlené v ďalších sekciách.

ovládače ASP.NET Core

ItemLifecycleController triedy a JobsController sú tenké implementácie ASP.NET Core radičov pre dve podmnožiny rozhrania API vyťaženia: správa životného cyklu položiek a úlohy. Tieto triedy sa pripájaujú do kanála HTTP ASP.NET Core. Slúžia ako vstupné body pre metódy rozhrania API, ktoré sú definované v špecifikácii Swagger. Triedy preposiela volania "skutočnej" implementácii, ktorú poskytuje vyťaženie.

Tu je príklad CreateItem metódy:

/// <summary>
/// Called by Microsoft Fabric for creating a new item.
/// </summary>
/// <remarks>
/// Upon item creation Fabric performs some basic validations, creates the item with 'provisioning' state and calls this API to notify the workload. The workload is expected to perform required validations, store the item metadata, allocate required resources, and update the Fabric item metadata cache with item relations and ETag. To learn more see [Microsoft Fabric item update flow](https://updateflow).
/// <br/>
/// <br/>This API should accept [SubjectAndApp authentication](https://subjectandappauthentication).
/// <br/>
/// <br/>##Permissions
/// <br/>Permissions are checked by Microsoft Fabric.
/// </remarks>
/// <param name="workspaceId">The workspace ID.</param>
/// <param name="itemType">The item type.</param>
/// <param name="itemId">The item ID.</param>
/// <param name="createItemRequest">The item creation request.</param>
/// <returns>Successfully created.</returns>
[Microsoft.AspNetCore.Mvc.HttpPost, Microsoft.AspNetCore.Mvc.Route("workspaces/{workspaceId}/items/{itemType}/{itemId}")]
public System.Threading.Tasks.Task CreateItem(System.Guid workspaceId, string itemType, System.Guid itemId, [Microsoft.AspNetCore.Mvc.FromBody] CreateItemRequest createItemRequest)
{

 return _implementation.CreateItemAsync(workspaceId, itemType, itemId, createItemRequest);
}

Rozhrania na implementáciu vyťaženia

IItemLifecycleController a IJobsController sú rozhrania pre predtým spomínané "reálne" implementácie. Definujú rovnaké metódy, ktoré prevádzkovatelia vykonávajú.

Definícia zmluvných tried

Zmluvné triedy jazyka C# sú triedy, ktoré používajú rozhrania API.

Implementácia

Ďalším krokom po generovaní kódu je implementácia IItemLifecycleController rozhraní a IJobsController . V ukážke Kotleba, ItemLifecycleControllerImpl a JobsControllerImpl implementovať tieto rozhrania.

Tento kód je napríklad implementáciou rozhrania CreateItem API:

/// <inheritdoc/>
public async Task CreateItemAsync(Guid workspaceId, string itemType, Guid itemId, CreateItemRequest createItemRequest)
{
 var authorizationContext = await _authenticationService.AuthenticateControlPlaneCall(_httpContextAccessor.HttpContext);
 var item = _itemFactory.CreateItem(itemType, authorizationContext);
 await item.Create(workspaceId, itemId, createItemRequest);
}

Spracovanie údajovej časti položky

Viaceré metódy rozhrania API akceptujú rôzne typy údajovej časti ako súčasť tela požiadavky alebo vracajú údajové časti ako súčasť odpovede. Má napríklad CreateItemRequestcreationPayload vlastnosť .

"CreateItemRequest": {
 "description": "Create item request content.",
 "type": "object",
 "additionalProperties": false,
 "required": [ "displayName" ],
 "properties": {
 "displayName": {
  "description": "The item display name.",
  "type": "string",
  "readOnly": false
 },
 "description": {
  "description": "The item description.",
  "type": "string",
  "readOnly": false
 },
 "creationPayload": {
  "description": "Creation payload specific to the workload and item type, passed by the item editor or as Fabric Automation API parameter.",
  "$ref": "#/definitions/CreateItemPayload",
  "readOnly": false
 }
 }
}

Typy týchto vlastností údajovej časti sú definované v špecifikácii Swagger. Existuje vyhradený typ každej údajovej časti. Tieto typy nedefinujú žiadne konkrétne vlastnosti a umožňujú zahrnutie akejkoľvek vlastnosti.

Tu je príklad CreateItemPayload typu:

"CreateItemPayload": {
 "description": "Creation payload specific to the workload and item type.",
 "type": "object",
 "additionalProperties": true
}

Generované zmluvné triedy jazyka C# sú definované ako partial. Majú slovník s definovanými vlastnosťami.

Príklad:

/// <summary>
/// Creation payload specific to the workload and item type.
/// </summary>
[System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0))")]
public partial class CreateItemPayload
{
 private System.Collections.Generic.IDictionary<string, object> _additionalProperties;

 [Newtonsoft.Json.JsonExtensionData]
 public System.Collections.Generic.IDictionary<string, object> AdditionalProperties
 {
  get { return _additionalProperties ?? (_additionalProperties = new System.Collections.Generic.Dictionary<string, object>()); }
  set { _additionalProperties = value; }
 }
}

Kód môže použiť tento slovník na čítanie a vrátenie vlastností. Lepším prístupom je však definovanie konkrétnych vlastností pomocou zodpovedajúcich typov a názvov. Deklaráciu môžete použiť na partial generované triedy na efektívne definovanie vlastností.

Súbor CreateItemPayload.cs napríklad obsahuje doplnkovú definíciu CreateItemPayload triedy.

V tomto príklade definícia pridá Item1Metadata vlastnosť :

namespace Fabric_Extension_BE_Boilerplate.Contracts.FabricAPI.Workload
{
    /// <summary>
    /// Extend the generated class by adding item-type-specific fields.
    /// In this sample every type will have a dedicated property. Alternatively, polymorphic serialization could be used.
    /// </summary>
    public partial class CreateItemPayload
    {
        [Newtonsoft.Json.JsonProperty("item1Metadata", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
        public Item1Metadata Item1Metadata { get; init; }
    }
}

Ak však vyťaženie podporuje viacero typov položiek, CreateItemPayload trieda musí byť schopná spracovať rôzne typy údajovej časti vytvorenia s jedným typom položky. Máte dve možnosti. Jednoduchší spôsob, ktorý sa používa v ukážke Kotleba, je definovať viacero voliteľných vlastností, pričom každá predstavuje údajovú časť vytvorenia pre iný typ položky. Podľa vytvoreného typu položky má každá požiadavka len jednu z týchto množín vlastností. Prípadne môžete implementovať polymorfnú serializáciu, ale táto možnosť nie je v ukážke preukázaná, pretože táto možnosť neposkytuje žiadne významné výhody.

Ak chcete napríklad podporovať dva typy položiek, definícia triedy musí byť rozšírená ako v nasledujúcom príklade:

namespace Fabric_Extension_BE_Boilerplate.Contracts.FabricAPI.Workload
{
    public partial class CreateItemPayload
    {
        [Newtonsoft.Json.JsonProperty("item1Metadata", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
        public Item1Metadata Item1Metadata { get; init; }

        [Newtonsoft.Json.JsonProperty("item2Metadata", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
        public Item2Metadata Item2Metadata { get; init; }
    } 
}

Poznámka

Údajovú časť odoslanú do vyťaženia vygeneruje klient. Môže ísť o editor položiek prvku iFrame alebo rozhranie REST API automatizácie tkaniny. Klient je zodpovedný za odoslanie správnej údajovej časti a zodpovedajúcu typu položky. Za overenie zodpovedá vyťaženie. Fabric považuje túto údajovú časť za nepriehľadný objekt a prenesie ju iba z klienta na vyťaženie. Podobne platí, že pre údajovú časť, ktorú vráti vyťaženie klientovi, je zodpovednosťou vyťaženia a klienta spracovať údajovú časť správne.

Tento kód napríklad zobrazuje, ako implementácia ukážkovej položky Ódňa1 zvláda údajovú časť:

protected override void SetDefinition(CreateItemPayload payload)
{
 if (payload == null)
 {
  Logger.LogInformation("No payload is provided for {0}, objectId={1}", ItemType, ItemObjectId);
  _metadata = Item1Metadata.Default.Clone();
  return;
 }

 if (payload.Item1Metadata == null)
 {
  throw new InvalidItemPayloadException(ItemType, ItemObjectId);
 }

 if (payload.Item1Metadata.Lakehouse == null)
 {
  throw new InvalidItemPayloadException(ItemType, ItemObjectId)
   .WithDetail(ErrorCodes.ItemPayload.MissingLakehouseReference, "Missing Lakehouse reference");
 }

 _metadata = payload.Item1Metadata.Clone();
}

Riešenie problémov a ladenie

V ďalších častiach sa opisuje, ako riešiť problémy s nasadením a ako ho ladiť.

Známe problémy a ich riešenia

Získajte informácie o známych problémoch a spôsoboch ich riešenia.

Chýbajúci tajný kľúč klienta

Chyba:

Microsoft.Identity.Client.MsalServiceException: Problém s konfiguráciou bráni overovaniam. Podrobnosti nájdete v chybovom hlásení zo servera. Konfiguráciu môžete upraviť na registračnom portáli aplikácie. Podrobnosti nájdete https://aka.ms/msal-net-invalid-client v téme .

Pôvodná výnimka: AADSTS7000215: Bol zadaný neplatný tajný kľúč klienta. Skontrolujte, či tajný kľúč odoslaný do žiadosti predstavuje hodnotu tajného kľúča klienta a nie ID tajného kľúča klienta pridaného do nastavenia aplikácie app_guid .

Riešenie: Uistite sa, že máte správne tajný kľúč klienta definované v appsettings.json.

Chyba:

Microsoft.Identity.Client.MsalUiRequiredException: AADSTS65001: Používateľ alebo správca nebol súhlas na použitie aplikácie s ID <example ID>. Odošlite interaktívnu žiadosť o overenie pre tohto používateľa a zdroj.

Riešenie:

  1. V editore položiek prejdite do dolnej časti bolesti a vyberte položku Prejsť na stránku overenia.

  2. V časti Rozsahy zadajte .default a potom vyberte položku Získať prístupový token.

  3. V dialógovom okne schválite revíziu.

Vytvorenie položky zlyhá z dôvodu výberu kapacity

Chyba:

PriorityPlacement: Pre umiestnenie s prioritou nie sú k dispozícii žiadne základné služby. K dispozícii sú iba namepoložky , guida workload-name .

Riešenie:

Ako používateľ môžete mať prístup iba ku skúšobnej kapacite. Uistite sa, že používate kapacitu, ku ktorým máte prístup.

Zlyhanie vytvorenia súboru s chybou 404 (NotFound)

Chyba:

Vytvorenie nového súboru zlyhalo pre súborPath: workspace-id'/'lakehouse-id'/Files/data.json. Kód stavu odpovede neuvádza úspešnosť: 404 (NotFound).

Riešenie:

Uistite sa, že pracujete s URL adresou OneLake DFS, ktorá vyhovuje vášmu prostrediu. Ak napríklad pracujete s prostredím PPE, zmeňte EnvironmentConstants.OneLakeDFSBaseUrl Constants.cs na príslušnú URL adresu.

Ladenie

Keď riešite problémy s rôznymi operáciami, môžete nastaviť body prerušenia v kóde na analýzu a ladenie správania. Na efektívne ladenie použite tento postup:

  1. Otvorte kód vo vašom vývojárskom prostredí.
  2. Prejdite na príslušnú funkciu obslužného programu operácií (napríklad OnCreateFabricItemAsync pre operácie CRUD alebo koncový bod v radiči pri execute prevádzke).
  3. Umiestnite body prerušenia do konkrétnych riadkov, kde chcete skontrolovať kód.
  4. Spustite aplikáciu v režime ladenia.
  5. Operáciu môžete spustiť z klientskeho rozhrania, ktoré chcete ladiť.

Ladiaci nástroj pozastaví vykonávanie v zadaných bodoch prerušenia, aby ste mohli preskúmať premenné, prechádzať kódom a identifikovať problémy.

Snímka obrazovky znázorňujúca ukážkový program s bodmi prerušenia na ladenie.

Pracovný priestor

Ak pripájate koncový server k projektu vyťaženia ukážky, vaša položka musí patriť do pracovného priestoru, ktorý je priradený ku kapacite. Môj pracovný priestor nie je predvolene priradený k kapacite. V opačnom prípade sa môže zobraziť chyba zobrazená na nasledujúcej snímke obrazovky:

Snímka obrazovky znázorňujúca používateľské rozhranie s názvom vzorovej položky vyťaženia.

  1. Prepnite na pomenovaný pracovný priestor. Ponechajte predvolený názov pracovného priestoru Môj pracovný priestor.

  2. Zo správneho pracovného priestoru načítajte ukážku vyťaženia a pokračujte testami:

Prispieť

Príspevky do tohto projektu sú vítané. Ak nájdete nejaké problémy alebo chcete pridať nové funkcie, postupujte podľa týchto krokov:

  1. Vetví odkladací priestor.
  2. Vytvorte novú vetvu na opravu funkcie alebo chyby.
  3. Urobte zmeny a potom ich potvrďte.
  4. Presunutie zmien do svojho vetveného odkladacieho priestoru.
  5. Vytvorte žiadosť o prijatie zmien s jasným popisom zmien.