Implementace back-endu Microsoft Fabric
Toto ukázkové úložiště pro vývoj úloh Microsoft Fabric je výchozím bodem pro vytváření aplikací, které vyžadují integraci s různými službami a pro integraci s architekturou lakehouse. Tento článek vám pomůže nastavit prostředí a nakonfigurovat potřebné součásti, abyste mohli začít. Článek popisuje klíčové komponenty a jejich role v architektuře.
Front-end
Front-end je místo, kde spravujete uživatelské prostředí (UX) a chování. Komunikuje s front-endovým portálem Fabric prostřednictvím prvku iFrame, který usnadňuje bezproblémovou interakci.
Další informace naleznete v části Front-end sady Microsoft Fabric Workload Development Kit.
Back-end
Back-end ukládá data i metadata. K vytvoření položek a metadat úloh používá operace Vytvoření, Čtení, Aktualizace a Odstranění (CRUD) a spouští úlohy pro naplnění dat v úložišti. Komunikace mezi front-endem a back-endem se vytváří prostřednictvím veřejných rozhraní API.
Azure Relay a DevGateway
Azure Relay umožňuje komunikaci mezi místním vývojovým prostředím a back-endem Fabric v režimu vývojáře. V režimu vývojáře funguje úloha na počítači vývojáře.
Nástroj DevGateway má dvě role:
- Zpracovává stranu pracovního zatížení kanálu Azure Relay a spravuje registraci lokální instance pracovního zatížení s Fabric v kontextu konkrétního pracovního prostoru. Nástroj zpracovává zrušení registrace, když se kanál odpojí.
- Funguje se službou Azure Relay pro kanál volání rozhraní API úloh z prostředků infrastruktury do úlohy.
Volání rozhraní API pro řízení úloh se provádějí přímo z úlohy do prostředků infrastruktury. Kanál Azure Relay se pro volání nevyžaduje.
Integrace Lakehouse
Architektura sady pro vývoj úloh se bezproblémově integruje s architekturou lakehouse pro operace, jako je ukládání, čtení a načítání dat. Interakce se usnadňuje prostřednictvím služby Azure Relay a sady Fabric SDK, která pomáhá zajistit zabezpečenou a ověřenou komunikaci. Další informace najdete v tématu Práce s daty zákazníků.
Ověření a zabezpečení
Microsoft Entra ID se používá k zabezpečenému ověřování a zajišťuje, aby všechny interakce v architektuře byly autorizované a zabezpečené.
Přehled vývojové sady poskytuje představu o naší architektuře. Další informace o konfiguraci projektů, pokyny pro ověřování a zahájení práce najdete v následujících článcích:
Front-end vytvoří komunikaci s front-endovým portálem Fabric prostřednictvím prvku iFrame. Portál zase komunikuje s back-endem Fabric tím, že volá jeho vystavená veřejná rozhraní API.
Pro interakce mezi back-endovým vývojovým polem a back-endem Fabric slouží Azure Relay jako konduit. Kromě toho se back-endový vývojový box bezproblémově integruje s Lakehousem. Komunikace se usnadňuje pomocí služby Azure Relay a sady Sdk (Fabric Software Development Kit) nainstalované v back-endovém vývojovém poli.
Ověřování pro veškerou komunikaci v rámci těchto komponent je zajištěno prostřednictvím microsoft Entra. Microsoft Entra poskytuje zabezpečené a ověřené prostředí pro interakce mezi front-endem, back-endem, Azure Relay, sadou Fabric SDK a Lakehousem.
Požadavky
- .NET 7.0 SDK
- Visual Studio 2022
Ujistěte se, že Správce balíčků NuGet je integrovaný do instalace sady Visual Studio. Tento nástroj je nutný pro zjednodušenou správu externích knihoven a balíčků nezbytných pro náš projekt.
Správa balíčků NuGet
<NuspecFile>Packages\manifest\ManifestPackageDebug.nuspec</NuspecFile>
a<NuspecFile>Packages\manifest\ManifestPackageRelease.nuspec</NuspecFile>
: Tyto vlastnosti určují cestu k souborům NuSpec použitým k vytvoření balíčku NuGet pro režimy ladění a vydání. Soubor NuSpec obsahuje metadata o balíčku, jako je ID, verze, závislosti a další relevantní informace.<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
: Při nastavenítrue
na hodnotu tato vlastnost dává procesu sestavení pokyn, aby během každého sestavení automaticky vygeneroval balíček NuGet. Tato vlastnost je užitečná, pokud chcete zajistit, aby byl balíček vždy aktuální s nejnovějšími změnami v projektu.<IsPackable>true</IsPackable>
: Při nastavenítrue
na , tato vlastnost označuje, že projekt lze zabalit do balíčku NuGet. Zabalení je základní vlastností pro projekty, které mají během procesu sestavení vytvářet balíčky NuGet.
Vygenerovaný balíček NuGet pro režim ladění se nachází v adresáři src\bin\Debug po procesu sestavení.
Při práci v cloudovém režimu můžete změnit konfiguraci sestavení sady Visual Studio na vydání a sestavení balíčku. Vygenerovaný balíček se nachází v src\bin\Release
adresáři. Další informace najdete v průvodci prací v cloudovém režimu.
Závislosti
Ukázka back-endu Boilerplate závisí na následujících balíčcích sady Azure SDK:
- Azure.Core
- Azure.Identity
- Azure.Storage.Files.DataLake
- Balíček Microsoft Identity
Pokud chcete nakonfigurovat Správce balíčků NuGet, zadejte cestu v části Zdroje balíčků před zahájením procesu sestavení.
<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čínáme
Nastavení ukázkového projektu úlohy na místním počítači:
Naklonujte úložiště: Spusťte
git clone https://github.com/microsoft/Microsoft-Fabric-workload-development-sample.git
.V sadě Visual Studio 2022 otevřete řešení.
Podle pokynů v kurzu ověřování nastavte registraci aplikace. Ujistěte se, že front-endové i back-endové projekty mají potřebné nastavení popsané v článku. Microsoft Entra se používá k zabezpečenému ověřování, aby se zajistilo, že všechny interakce v architektuře jsou autorizované a zabezpečené.
Aktualizujte základní adresu URL systému souborů DFS microsoft OneLake. V závislosti na vašem prostředí Fabric možná budete moct aktualizovat hodnotu
OneLakeDFSBaseURL
ve složce src\Constants . Výchozí hodnota jeonelake.dfs.fabric.microsoft.com
, ale adresu URL můžete aktualizovat tak, aby odrážela vaše prostředí. Další informace o cestách DFS najdete v dokumentaci k OneLake.Nastavte konfiguraci úlohy.
- Zkopírujte workload-dev-mode.json ze souboru src/Config do složky C:.
-
V souboru workload-dev-mode.json aktualizujte následující pole tak, aby odpovídala vaší konfiguraci:
-
WorkspaceGuid: ID vašeho pracovního prostoru. Tuto hodnotu najdete v adrese URL prohlížeče, když vyberete pracovní prostor v prostředcích infrastruktury. Například
https://app.powerbi.com/groups/<WorkspaceID>/
. - ManifestPackageFilePath: Umístění balíčku manifestu. Při sestavování řešení uloží balíček manifestu do souboru src\bin\Debug. Další informace o balíčku manifestu najdete dále v článku.
- WorkloadEndpointURL: Adresa URL koncového bodu úlohy.
-
WorkspaceGuid: ID vašeho pracovního prostoru. Tuto hodnotu najdete v adrese URL prohlížeče, když vyberete pracovní prostor v prostředcích infrastruktury. Například
-
V souboru Packages/manifest/WorkloadManifest.xml aktualizujte následující pole tak, aby odpovídala vaší konfiguraci:
-
<AppId>
: ID klienta (ID aplikace) aplikace Microsoft Entra úlohy. -
<RedirectUri>
: Identifikátory URI přesměrování. Tuto hodnotu najdete v registraci aplikace, kterou jste vytvořili, v části Ověřování. -
<ResourceId>
: Cílová skupina příchozích tokenů Microsoft Entra. Tyto informace najdete v registraci aplikace, kterou jste vytvořili, v části Zveřejnění rozhraní API.
-
-
V souboru src/appsettings.json aktualizujte následující pole tak, aby odpovídala vaší konfiguraci:
- PublisherTenantId: ID tenanta vydavatele úloh.
- ClientId: ID klienta (ID aplikace) úlohy aplikace Microsoft Entra.
- ClientSecret: Tajný kód pro aplikaci Microsoft Entra pro úlohu.
- Cílová skupina: Cílová skupina příchozích tokenů Microsoft Entra. Tyto informace najdete v registraci aplikace, kterou jste vytvořili, v části Zveřejnění rozhraní API. Toto nastavení se také označuje jako identifikátor URI ID aplikace.
Vygenerujte balíček manifestu.
Pokud chcete vygenerovat soubor balíčku manifestu, sestavte Fabric_Extension_BE_Boilerplate. Sestavení je třístupňový proces, který vygeneruje soubor balíčku manifestu. Spustí se tyto kroky:
- Triggery ManifestValidator.ps1 na WorkloadManifest.xml v Packages\manifest/ a trigger ItemManifestValidator.ps1 u všech položek XMLs (například Item1.xml) v Packages\manifest/. Pokud se ověření nezdaří, vygeneruje se chybový soubor. Ověřovací skripty můžete zobrazit v ValidationScripts/.
- Pokud existuje chybový soubor, sestavení selže s chybami ověření s manifesty nebo výchozími hodnotami. Pokud chcete zobrazit soubor chyby v sadě Visual Studio, poklikejte na chybu ve výsledcích ověření.
- Po úspěšném ověření zabalte soubory WorkloadManifest.xml a Item1.xml do manifestPackage.1.0.0.nupkg. Výsledný balíček je ve src\bin\Debug.
Zkopírujte soubor ManifestPackage.1.0.0.nupkg do cesty definované v konfiguračním souboru workload-dev-mode.json.
Program.cs je vstupní bod a spouštěcí skript pro vaši aplikaci. V tomto souboru můžete nakonfigurovat různé služby, inicializovat aplikaci a spustit webového hostitele.
Sestavte, aby váš projekt mohl přistupovat k požadovaným závislostem pro kompilaci a spouštění.
Stažení devGatewayu z webu Stažení softwaru od Microsoftu
Spusťte aplikaci Microsoft.Fabric.Workload.DevGateway.exe a přihlaste se pomocí uživatele, který má oprávnění správce pracovního prostoru pro pracovní prostor zadaný v
WorkspaceGuid
poli workload-dev-mode.json.Po ověření externí úlohy navazují komunikaci s back-endem Prostředků infrastruktury prostřednictvím služby Azure Relay. Tento proces zahrnuje registraci přenosu a správu komunikace, která je usnadnit určeným proxy uzlem. Balíček, který obsahuje manifest úlohy, se nahraje a publikuje.
V této fázi fabric zjistí úlohu a zahrne její přidělenou kapacitu.
V konzole můžete monitorovat potenciální chyby.
Pokud se nezobrazí žádné chyby, připojení se naváže, registrace se úspěšně spustí a manifest úlohy se systematicky nahraje.
V sadě Visual Studio změňte spouštěcí projekt na často používaný projekt a vyberte Spustit.
Práce s ukázkovým projektem Boilerplate
Generování kódu
K předvedení úlohy pomocí rozhraní REST API používáme ukázku často používaného jazyka C# ASP.NET Core. Ukázka začíná generováním zástupných procedur serveru a tříd kontraktů na základě specifikace Swagger rozhraní API pro úlohy. Kód můžete vygenerovat pomocí některého z několika nástrojů pro generování kódu Swagger. Často používaný vzorek používá NSwag. Ukázka obsahuje skript příkazového řádku GenerateServerStub.cmd , který zabalí generátor kódu NSwag. Skript přebírá jeden parametr, což je úplná cesta k instalačnímu adresáři NSwag. Kontroluje také definiční soubor Swaggeru (swagger.json) a konfigurační soubor (nswag.json) ve složce.
Spuštěním tohoto skriptu se vytvoří soubor jazyka C# s názvem WorkloadAPI_Generated.cs. Obsah tohoto souboru lze logicky rozdělit do tří částí, jak je vysvětleno v dalších částech.
kontrolery zástupných procedur ASP.NET Core
ItemLifecycleController
třídy JobsController
jsou dynamické implementace řadičů ASP.NET Core pro dvě podmnožinu rozhraní API pro úlohy: správu životního cyklu položek a úlohy. Tyto třídy se připojují k kanálu HTTP ASP.NET Core. Slouží jako vstupní body pro metody rozhraní API definované ve specifikaci Swaggeru. Třídy přesměrují volání "skutečné" implementace, která je poskytována úlohou.
Tady je příklad CreateItem
metody:
/// <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);
}
Rozhraní pro implementaci úloh
IItemLifecycleController
a IJobsController
jsou rozhraní pro dříve zmíněné "skutečné" implementace. Definují stejné metody, které kontrolery implementují.
Definice tříd kontraktů
Třídy kontraktů jazyka C# jsou třídy, které rozhraní API používají.
Implementace
Dalším krokem po vygenerování kódu je implementace IItemLifecycleController
rozhraní a IJobsController
rozhraní. V ukázce ItemLifecycleControllerImpl
Boilerplate a JobsControllerImpl
implementujte tato rozhraní.
Tento kód je například implementace rozhraní 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);
}
Zpracování datové části položky
Několik metod rozhraní API přijímá různé typy datové části jako součást textu požadavku nebo vrací datové části jako součást odpovědi. Má například CreateItemRequest
creationPayload
vlastnost.
"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í datové části jsou definovány ve specifikaci Swaggeru. Pro každý druh datové části je vyhrazený typ. Tyto typy nedefinují žádné konkrétní vlastnosti a umožňují zahrnout jakoukoli vlastnost.
Tady je příklad CreateItemPayload
typu:
"CreateItemPayload": {
"description": "Creation payload specific to the workload and item type.",
"type": "object",
"additionalProperties": true
}
Vygenerované třídy kontraktů jazyka C# jsou definovány jako partial
. Mají slovník s definovanými vlastnostmi.
Tady je pří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 tento slovník použít ke čtení a vrácení vlastností. Lepším přístupem je ale definovat konkrétní vlastnosti pomocí odpovídajících typů a názvů. Deklaraci vygenerovaných tříd můžete použít partial
k efektivnímu definování vlastností.
Například soubor CreateItemPayload.cs obsahuje doplňkovou definici třídy CreateItemPayload
.
V tomto příkladu definice přidá Item1Metadata
vlastnost:
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; }
}
}
Pokud však úloha podporuje více typů položek, CreateItemPayload
třída musí být schopná zpracovat různé typy datové části vytváření v jednom typu položky. Máte dvě možnosti. Jednodušší způsob, jak se používá v ukázce Boilerplate, je definovat více volitelných vlastností, z nichž každá představuje datovou část vytvoření pro jiný typ položky. Každý požadavek pak má pouze jednu z těchto sad vlastností podle typu položky, který se vytváří. Alternativně můžete implementovat polymorfní serializaci, ale tato možnost se v ukázce neukazuje, protože tato možnost neposkytuje žádné významné výhody.
Pokud chcete například podporovat dva typy položek, musí být definice třídy rozšířena podobně jako v následujícím příkladu:
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:
Datová část odeslaná do úlohy je generována klientem. Může se jednat o prvek iFrame editoru položek nebo rozhraní REST API služby Fabric Automation. Klient zodpovídá za odeslání správné datové části a odpovídající typu položky. Úloha zodpovídá za ověření. Prostředky infrastruktury považují tuto datovou část za neprůmyslný objekt a přenese ji pouze z klienta do úlohy. Podobně pro datovou část, která je vrácena úlohou klientovi, zodpovídá za zatížení a klient, aby datovou část zvládl správně.
Tento kód například ukazuje, jak implementace ukázkové položky 1 kotelny zpracovává datovou část:
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();
}
Řešení problémů a ladění
Další části popisují, jak řešit potíže a ladit nasazení.
Známé problémy a jejich řešení
Získejte informace o známých problémech a způsobech jejich řešení.
Chybějící tajný klíč klienta
Chyba:
Microsoft.Identity.Client.MsalServiceException: Problém s konfigurací brání ověřování. Podrobnosti najdete v chybové zprávě ze serveru. Konfiguraci můžete upravit na portálu pro registraci aplikací. Podrobnosti najdete https://aka.ms/msal-net-invalid-client
v tématu.
Původní výjimka: AADSTS7000215: Byl poskytnut neplatný tajný klíč klienta. Ujistěte se, že tajný klíč odeslaný v požadavku je hodnota tajného klíče klienta, a ne ID tajného klíče klienta přidaného do nastavení aplikace app_guid
.
Řešení: Ujistěte se, že máte správný tajný klíč klienta definovaný v appsettings.json.
Chyba při vytváření položky kvůli chybějícímu souhlasu správce
Chyba:
Microsoft.Identity.Client.MsalUiRequiredException: AADSTS65001: Uživatel nebo správce nesouhlasil s použitím aplikace s ID <example ID>
. Odešlete interaktivní žádost o autorizaci pro tohoto uživatele a prostředek.
Řešení:
V editoru položek přejděte do dolní části bolesti a vyberte Přejít na ověřovací stránku.
V části Obory zadejte .default a pak vyberte Získat přístupový token.
V dialogovém okně schvalte revizi.
Vytvoření položky se nezdaří kvůli výběru kapacity
Chyba:
PriorityPlacement: Pro umístění priority nejsou k dispozici žádné základní služby. Pouze name
, guid
a workload-name
jsou k dispozici.
Řešení:
Jako uživatel můžete mít přístup pouze ke zkušební kapacitě. Ujistěte se, že používáte kapacitu, ke které máte přístup.
Chyba při vytváření souboru s chybou 404 (Nenalezeno)
Chyba:
Vytvoření nového souboru pro cestu filePath se nezdařilo: workspace-id/'lakehouse-id'/Files/data.json. Stavový kód odpovědi neznamená úspěch: 404 (Nenalezeno).
Řešení:
Ujistěte se, že pracujete s adresou URL oneLake DFS, která odpovídá vašemu prostředí. Pokud například pracujete s prostředím OOP, změňte EnvironmentConstants.OneLakeDFSBaseUrl
Constants.cs na příslušnou adresu URL.
Ladění
Při řešení potíží s různými operacemi můžete v kódu nastavit zarážky pro analýzu a ladění chování. Při efektivním ladění postupujte takto:
- Otevřete kód ve vývojovém prostředí.
- Přejděte na příslušnou funkci obslužné rutiny operace (například
OnCreateFabricItemAsync
operace CRUD nebo koncový bod v kontroleru proexecute
operace). - Umístěte zarážky na konkrétní řádky, kam chcete kód zkontrolovat.
- Spusťte aplikaci v režimu ladění.
- Aktivujte operaci z front-endu, který chcete ladit.
Ladicí program pozastaví provádění na zadaných zarážek, abyste mohli zkoumat proměnné, procházet kód a identifikovat problémy.
Pracovní prostor
Pokud připojujete back-end k ukázkovému projektu úloh, musí položka patřit do pracovního prostoru, který je přidružený ke kapacitě. Pracovní prostor Můj pracovní prostor není ve výchozím nastavení přidružený ke kapacitě. Jinak se může zobrazit chyba zobrazená na následujícím snímku obrazovky:
Přepněte do pojmenovaného pracovního prostoru. Ponechte výchozí název pracovního prostoru Můj pracovní prostor.
Ve správném pracovním prostoru načtěte ukázkovou úlohu a pokračujte testy:
Přispět
Vítáme příspěvky k tomuto projektu. Pokud zjistíte nějaké problémy nebo chcete přidat nové funkce, postupujte takto:
- Rozvětvujte úložiště.
- Vytvořte novou větev pro funkci nebo opravu chyb.
- Proveďte změny a potvrďte je.
- Nasdílejte změny do rozvětvovaného úložiště.
- Vytvořte žádost o přijetí změn, která má jasný popis vašich změn.