Práce se sadou SDK back-endového serveru .NET pro Azure Mobile Apps

V tomto tématu se dozvíte, jak používat sadu SDK back-endového serveru .NET v klíčových scénářích Azure App Service Mobile Apps. Sada Azure Mobile Apps SDK vám pomůže pracovat s mobilními klienty z vaší ASP.NET aplikace.

Tip

Sada SDK serveru .NET pro Azure Mobile Apps je open source na GitHubu. Úložiště obsahuje veškerý zdrojový kód, včetně celé sady testů jednotek sady SDK serveru a některých ukázkových projektů.

Referenční dokumentace

Referenční dokumentace k sadě SDK serveru najdete tady: Azure Mobile Apps .NET Reference.

Postupy: Vytvoření back-endu mobilní aplikace .NET

Pokud spouštíte nový projekt, můžete vytvořit App Service aplikaci pomocí Azure Portal nebo sady Visual Studio. Aplikaci App Service můžete spustit místně nebo projekt publikovat do cloudové App Service mobilní aplikace.

Pokud do existujícího projektu přidáváte mobilní funkce, přečtěte si část Stažení a inicializace sady SDK .

Vytvoření back-endu .NET pomocí Azure Portal

Pokud chcete vytvořit App Service mobilní back-end, postupujte podle kurzu Rychlý start nebo postupujte takto:

  1. Přihlaste se k webu Azure Portal.

  2. Vyberte +NOVÝ>Web + Mobilní>mobilní aplikace a zadejte název back-endu Mobile Apps.

  3. Jako skupinu prostředků vyberte existující skupinu prostředků nebo vytvořte novou (pomocí stejného názvu jako aplikace).

  4. Pro plán App Service je vybraný výchozí plán (na úrovni Standard). Můžete také vybrat jiný plán nebo vytvořit nový.

    Nastavení plánu App Service určují umístění, funkce, náklady a výpočetní prostředky přidružené k vaší aplikaci. Další informace o plánech App Service a o tom, jak vytvořit nový plán v jiné cenové úrovni a v požadovaném umístění, najdete v podrobném přehledu plánů Azure App Service.

  5. Vyberte Vytvořit. Tento krok vytvoří back-end Mobile Apps.

  6. V podokně Nastavení nového back-endu Mobile Apps vyberte Rychlý start> platformy > klientské aplikace Připojit databázi.

    Výběry pro připojení databáze

  7. V podokně Přidat datové připojení vyberte SQL Database>Vytvoření nové databáze. Zadejte název databáze, zvolte cenovou úroveň a pak vyberte Server. Novou databázi můžete použít opakovaně. Pokud už ve stejném umístění databázi máte, můžete místo toho vybrat možnost Použít existující databázi. Nedoporučujeme používat databázi v jiném umístění kvůli nákladům na šířku pásma a vyšší latenci.

    Výběr databáze

  8. V podokně Nový server zadejte do pole Název serveru jedinečný název serveru, zadejte přihlašovací jméno a heslo, vyberte Povolit službám Azure přístup k serveru a vyberte OK. Tento krok vytvoří novou databázi.

  9. Zpátky v podokně Přidat datové připojení vyberte Připojovací řetězec, zadejte hodnoty přihlášení a hesla pro vaši databázi a vyberte OK.

    Než budete pokračovat, počkejte několik minut, než se databáze úspěšně nasadí.

V okně Začínáme v části Vytvořit rozhraní API tabulky zvolte jako back-endový jazykjazyk jazyk C#. Klikněte na Stáhnout, extrahujte komprimované soubory projektu do místního počítače a otevřete řešení v sadě Visual Studio.

Vytvoření back-endu .NET pomocí sady Visual Studio 2017

Nainstalujte úlohu Azure prostřednictvím Instalační program pro Visual Studio pro publikování do projektu Azure Mobile Apps ze sady Visual Studio. Po instalaci sady SDK vytvořte ASP.NET aplikaci pomocí následujícího postupu:

  1. Otevřete dialogové okno Nový projekt(ze> souborunového>projektu...).
  2. Rozbalte Visual C# a vyberte Web.
  3. Vyberte ASP.NET webovou aplikaci (.NET Framework).
  4. Vyplňte název projektu. Pak klikněte na OK.
  5. Ze seznamu šablon vyberte mobilní aplikaci Azure .
  6. Kliknutím na tlačítko OK vytvořte řešení.
  7. Klikněte pravým tlačítkem na projekt v Průzkumník řešení a zvolte Publikovat... a pak jako cíl publikování zvolte App Service.
  8. Postupujte podle pokynů k ověření a zvolte nový nebo existující Azure App Service, který chcete publikovat.

Vytvoření back-endu .NET pomocí sady Visual Studio 2015

Nainstalujte sadu Azure SDK pro .NET (verze 2.9.0 nebo novější) a vytvořte projekt Azure Mobile Apps v sadě Visual Studio. Po instalaci sady SDK vytvořte ASP.NET aplikaci pomocí následujícího postupu:

  1. Otevřete dialogové okno Nový projekt(ze> souborunového>projektu...).
  2. Rozbalte šablony>Visual C# a vyberte Web.
  3. Vyberte Webová aplikace ASP.NET.
  4. Vyplňte název projektu. Pak klikněte na OK.
  5. V části ASP.NET Šablony 4.5.2 vyberte Mobilní aplikace Azure. Pokud chcete vytvořit mobilní back-end v cloudu, ve kterém můžete publikovat tento projekt, zkontrolujte hostitele v cloudu .
  6. Klikněte na OK.

Postupy: Stažení a inicializace sady SDK

Sada SDK je k dispozici na NuGet.org. Tento balíček zahrnuje základní funkce potřebné k zahájení práce se sadou SDK. Chcete-li inicializovat sadu SDK, musíte provést akce s objektem HttpConfiguration .

Instalace sady SDK

Pokud chcete nainstalovat sadu SDK, klikněte pravým tlačítkem myši na projekt serveru v sadě Visual Studio, vyberte Spravovat balíčky NuGet, vyhledejte balíček Microsoft.Azure.Mobile.Server a klikněte na nainstalovat.

Inicializace projektu serveru

Projekt back-endového serveru .NET je inicializován podobně jako u jiných projektů ASP.NET, a to zahrnutím spouštěcí třídy OWIN. Ujistěte se, že jste odkazovali na balíček Microsoft.Owin.Host.SystemWebNuGet . Chcete-li přidat tuto třídu v sadě Visual Studio, klikněte pravým tlačítkem myši na projekt serveru a vyberte Přidat>novou položku a pak Web>General>OWIN Startup class. Třída se vygeneruje s následujícím atributem:

[assembly: OwinStartup(typeof(YourServiceName.YourStartupClassName))]

Configuration() V metodě vaší spouštěcí třídy OWIN použijte objekt HttpConfiguration ke konfiguraci prostředí Azure Mobile Apps. Následující příklad inicializuje projekt serveru bez přidaných funkcí:

// in OWIN startup class
public void Configuration(IAppBuilder app)
{
    HttpConfiguration config = new HttpConfiguration();

    new MobileAppConfiguration()
        // no added features
        .ApplyTo(config);

    app.UseWebApi(config);
}

Chcete-li povolit jednotlivé funkce, je nutné volat metody rozšíření na objekt MobileAppConfiguration před voláním ApplyTo. Například následující kód přidá výchozí trasy do všech kontrolerů rozhraní API, které mají atribut [MobileAppController] během inicializace:

new MobileAppConfiguration()
    .MapApiControllers()
    .ApplyTo(config);

Rychlý start serveru z Azure Portal volá UseDefaultConfiguration(). Tento ekvivalent k následujícímu nastavení:

    new MobileAppConfiguration()
        .AddMobileAppHomeController()             // from the Home package
        .MapApiControllers()
        .AddTables(                               // from the Tables package
            new MobileAppTableConfiguration()
                .MapTableControllers()
                .AddEntityFramework()             // from the Entity package
            )
        .AddPushNotifications()                   // from the Notifications package
        .MapLegacyCrossDomainController()         // from the CrossDomain package
        .ApplyTo(config);

Použité metody rozšíření jsou:

  • AddMobileAppHomeController() poskytuje výchozí domovskou stránku Azure Mobile Apps.
  • MapApiControllers() poskytuje vlastní funkce rozhraní API pro kontrolery WebAPI zdobené atributem [MobileAppController] .
  • AddTables() poskytuje mapování /tables koncových bodů na kontrolery tabulek.
  • AddTablesWithEntityFramework() je krátká příručka pro mapování /tables koncových bodů pomocí kontrolerů založených na rozhraní Entity Framework.
  • AddPushNotifications() poskytuje jednoduchou metodu registrace zařízení pro Notification Hubs.
  • MapLegacyCrossDomainController() poskytuje standardní hlavičky CORS pro místní vývoj.

Rozšíření sady SDK

Následující balíčky rozšíření založené na NuGetu poskytují různé mobilní funkce, které může vaše aplikace používat. Rozšíření povolíte během inicializace pomocí objektu MobileAppConfiguration .

  • Microsoft.Azure.Mobile.Server.Quickstart Podporuje základní nastavení Mobile Apps. Přidáno do konfigurace voláním metody rozšíření UseDefaultConfiguration během inicializace. Toto rozšíření zahrnuje následující rozšíření: Oznámení, ověřování, entita, tabulky, multidoménové balíčky a balíčky Domů. Tento balíček používá rychlý start Mobile Apps dostupný na Azure Portal.
  • Microsoft.Azure.Mobile.Server.Home Implementuje výchozí tuto mobilní aplikaci je spuštěná a spuštěná stránka kořenového adresáře webu. Přidejte do konfigurace voláním AddMobileAppHomeController rozšiřující metody.
  • Microsoft.Azure.Mobile.Server.Tables obsahuje třídy pro práci s daty a nastavení datového kanálu. Přidejte do konfigurace voláním metody rozšíření AddTables .
  • Microsoft.Azure.Mobile.Server.Entity umožňuje rozhraní Entity Framework přistupovat k datům v SQL Database. Přidejte do konfigurace voláním AddTablesWithEntityFramework rozšiřující metody.
  • Microsoft.Azure.Mobile.Server.Authentication Umožňuje ověřování a nastavení middlewaru OWIN použitého k ověření tokenů. Přidejte do konfigurace voláním AddAppServiceAuthentication a IAppBuilder. Metody rozšíření UseAppServiceAuthentication
  • Microsoft.Azure.Mobile.Server.Notifications Umožňuje nabízená oznámení a definuje koncový bod nabízené registrace. Přidejte do konfigurace voláním Metody rozšíření AddPushNotifications .
  • Microsoft.Azure.Mobile.Server.CrossDomain Vytvoří kontroler, který bude obsluhovat data staršími webovými prohlížeči z mobilní aplikace. Přidejte do konfigurace zavoláním Metody rozšíření MapLegacyCrossDomainController .
  • Microsoft.Azure.Mobile.Server.Login poskytuje metodu AppServiceLoginHandler.CreateToken(), což je statická metoda používaná při vlastních scénářích ověřování.

Postupy: Publikování projektu serveru

V této části se dozvíte, jak publikovat back-endový projekt .NET ze sady Visual Studio. Back-endový projekt můžete nasadit také pomocí Gitu nebo jakékoli jiné metody, které jsou tam k dispozici.

  1. V sadě Visual Studio znovu sestavte projekt pro obnovení balíčků NuGet.

  2. V Průzkumník řešení klikněte pravým tlačítkem myši na projekt a klikněte na Publikovat. Při prvním publikování musíte definovat profil publikování. Pokud už máte definovaný profil, můžete ho vybrat a kliknout na Publikovat.

  3. Pokud se zobrazí výzva k výběru cíle publikování, klikněte na Microsoft Azure App Service>Dalš a pak se (v případě potřeby) přihlaste pomocí svých přihlašovacích údajů Azure. Visual Studio stáhne a bezpečně uloží nastavení publikování přímo z Azure.

  4. Zvolte své předplatné, v zobrazení vyberte typ prostředku, rozbalte mobilní aplikaci a klikněte na back-end mobilní aplikace a potom klikněte na OK.

  5. Ověřte informace o profilu publikování a klikněte na Publikovat.

    Když se back-end mobilní aplikace úspěšně publikoval, zobrazí se cílová stránka označující úspěch.

Postupy: Definování kontroleru tabulky

Definujte kontroler tabulky pro zveřejnění tabulky SQL pro mobilní klienty. Konfigurace kontroleru tabulky vyžaduje tři kroky:

  1. Vytvořte třídu DTO (Data Transfer Object).
  2. Nakonfigurujte odkaz na tabulku ve třídě Mobile DbContext.
  3. Vytvořte kontroler tabulky.

Objekt DTO (Data Transfer Object) je prostý objekt C#, který dědí z EntityData. Příklad:

public class TodoItem : EntityData
{
    public string Text { get; set; }
    public bool Complete {get; set;}
}

DTO slouží k definování tabulky v databázi SQL. Chcete-li vytvořit položku databáze, přidejte DbSet<> vlastnost do DbContext, který používáte. Ve výchozí šabloně projektu pro Azure Mobile Apps se nazývá Models\MobileServiceContext.csDbContext:

public class MobileServiceContext : DbContext
{
    private const string connectionStringName = "Name=MS_TableConnectionString";

    public MobileServiceContext() : base(connectionStringName)
    {

    }

    public DbSet<TodoItem> TodoItems { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Conventions.Add(
            new AttributeToColumnAnnotationConvention<TableColumnAttribute, string>(
                "ServiceColumnTable", (property, attributes) => attributes.Single().ColumnType.ToString()));
    }
}

Pokud máte nainstalovanou sadu Azure SDK, můžete teď vytvořit řadič tabulky šablony následujícím způsobem:

  1. Klikněte pravým tlačítkem myši na složku Kontrolery a vyberte Přidat>kontroler....
  2. Vyberte možnost Kontroleru tabulek Azure Mobile Apps a pak klikněte na Přidat.
  3. V dialogovém okně Přidat kontroler :
    • V rozevíracím seznamu Třída modelu vyberte nový objekt DTO.
    • V rozevíracím seznamu DbContext vyberte třídu Mobile Service DbContext.
    • Název kontroleru se vytvoří za vás.
  4. Klikněte na Přidat.

Projekt serveru rychlý start obsahuje příklad pro jednoduchý TodoItemController.

Postupy: Úprava velikosti stránkování tabulky

Azure Mobile Apps ve výchozím nastavení vrací 50 záznamů na požadavek. Stránkování zajišťuje, že klient neváže vlákno uživatelského rozhraní ani server příliš dlouho a zajišťuje tak dobré uživatelské prostředí. Pokud chcete změnit velikost stránkování tabulky, zvětšete velikost povoleného dotazu na straně serveru a velikost stránky na straně klienta Pomocí atributu upravíte povolenou EnableQuery velikost dotazu na straně serveru:

[EnableQuery(PageSize = 500)]

Ujistěte se, že pageSize je stejná nebo větší než velikost požadovaná klientem. Podrobnosti o změně velikosti stránky klienta najdete v dokumentaci ke konkrétnímu postupu klienta.

Postupy: Definování vlastního kontroleru rozhraní API

Vlastní kontroler rozhraní API poskytuje nejzákladnější funkce back-endu mobilní aplikace zveřejněním koncového bodu. Pomocí atributu [MobileAppController] můžete zaregistrovat kontroler rozhraní API specifický pro mobilní zařízení. Atribut MobileAppController zaregistruje trasu, nastaví serializátor JSON v Mobile Apps a zapne kontrolu verzí klienta.

  1. V sadě Visual Studio klikněte pravým tlačítkem myši na složku Kontrolery a potom klikněte na Přidat>kontroler, vyberte Kontroler webového rozhraní API 2 – prázdný a klikněte na Přidat.

  2. Zadejte název kontroleru, například CustomControllera klikněte na Přidat.

  3. Do nového souboru třídy kontroleru přidejte následující příkaz using:

     using Microsoft.Azure.Mobile.Server.Config;
    
  4. Použijte atribut [MobileAppController] na definici třídy kontroleru rozhraní API, jako v následujícím příkladu:

     [MobileAppController]
     public class CustomController : ApiController
     {
           //...
     }
    
  5. V souboru App_Start/Startup.MobileApp.cs přidejte volání metody rozšíření MapApiControllers , jak je znázorněno v následujícím příkladu:

     new MobileAppConfiguration()
         .MapApiControllers()
         .ApplyTo(config);
    

Můžete také použít metodu UseDefaultConfiguration() rozšíření místo MapApiControllers(). Ke každému kontroleru, který nemá aplikaci MobileAppControllerAttribute , je stále možné přistupovat klienty, ale klienti ho nemusí správně využívat pomocí žádné klientské sady SDK mobilní aplikace.

Postupy: Práce s ověřováním

Azure Mobile Apps používá ověřování App Service / autorizaci k zabezpečení mobilního back-endu. V této části se dozvíte, jak provádět následující úlohy související s ověřováním v projektu back-endového serveru .NET:

Postupy: Přidání ověřování do projektu serveru

Do projektu serveru můžete přidat ověřování rozšířením objektu MobileAppConfiguration a konfigurací middlewaru OWIN. Když nainstalujete balíček Microsoft.Azure.Mobile.Server.Quickstart a zavoláte metodu rozšíření UseDefaultConfiguration , můžete přeskočit na krok 3.

  1. V sadě Visual Studio nainstalujte balíček Microsoft.Azure.Mobile.Server.Authentication .

  2. Do souboru projektu Startup.cs přidejte na začátek metody Konfigurace následující řádek kódu:

     app.UseAppServiceAuthentication(config);
    

    Tato komponenta middlewaru OWIN ověřuje tokeny vydané přidruženou bránou App Service.

  3. Přidejte atribut do libovolného [Authorize] kontroleru nebo metody, která vyžaduje ověření.

Informace o ověřování klientů v back-endu Mobile Apps najdete v tématu Přidání ověřování do aplikace.

Postupy: Použití vlastního ověřování pro aplikaci

Důležité

Pokud chcete povolit vlastní ověřování, musíte nejprve povolit ověřování App Service bez výběru zprostředkovatele pro App Service v Azure Portal. Tím se povolí proměnná prostředí WEBSITE_AUTH_SIGNING_KEY při hostované službě.

Pokud nechcete používat jednoho z poskytovatelů ověřování nebo autorizace App Service, můžete implementovat vlastní přihlašovací systém. Nainstalujte balíček Microsoft.Azure.Mobile.Server.Login , který vám pomůže s generováním ověřovacího tokenu. Zadejte vlastní kód pro ověřování přihlašovacích údajů uživatele. Můžete například zkontrolovat, jestli v databázi nemáte slaná hesla a hesla hash. V následujícím příkladu isValidAssertion() je metoda (definovaná jinde) zodpovědná za tyto kontroly.

Vlastní ověřování je vystaveno vytvořením ApiControlleru a vystavením register a login akcemi. Klient by měl ke shromažďování informací od uživatele použít vlastní uživatelské rozhraní. Informace se pak odesílají do rozhraní API se standardním voláním HTTP POST. Jakmile server ověří kontrolní výraz, token se vydá pomocí AppServiceLoginHandler.CreateToken() metody. ApiController by neměl atribut používat [MobileAppController] .

login Příklad akce:

    public IHttpActionResult Post([FromBody] JObject assertion)
    {
        if (isValidAssertion(assertion)) // user-defined function, checks against a database
        {
            JwtSecurityToken token = AppServiceLoginHandler.CreateToken(new Claim[] { new Claim(JwtRegisteredClaimNames.Sub, assertion["username"]) },
                mySigningKey,
                myAppURL,
                myAppURL,
                TimeSpan.FromHours(24) );
            return Ok(new LoginResult()
            {
                AuthenticationToken = token.RawData,
                User = new LoginResultUser() { UserId = userName.ToString() }
            });
        }
        else // user assertion was not valid
        {
            return this.Request.CreateUnauthorizedResponse();
        }
    }

V předchozím příkladu jsou LoginResult a LoginResultUser serializovatelné objekty, které zveřejňují požadované vlastnosti. Klient očekává, že se odpovědi na přihlášení vrátí jako objekty JSON formuláře:

    {
        "authenticationToken": "<token>",
        "user": {
            "userId": "<userId>"
        }
    }

Tato AppServiceLoginHandler.CreateToken() metoda zahrnuje cílovou skupinu a parametr vystavitele . Oba tyto parametry jsou nastavené na adresu URL kořenového adresáře vaší aplikace pomocí schématu HTTPS. Podobně byste měli nastavit secretKey jako hodnotu podpisového klíče vaší aplikace. Nedistribuujte podpisový klíč v klientovi, protože se dá použít k vytáčení klíčů a zosobnění uživatelů. Podpisový klíč můžete získat při hostování v App Service odkazem na proměnnou prostředí WEBSITE_AUTH_SIGNING_KEY. V případě potřeby v místním kontextu ladění načtěte klíč a uložte ho jako nastavení aplikace podle pokynů v části Místní ladění s ověřovací částí .

Vystavený token může obsahovat i jiné deklarace identity a datum vypršení platnosti. Vystavený token musí obsahovat minimálně deklaraci předmětu (sub).

Standardní metodu klienta loginAsync() můžete podporovat přetížením trasy ověřování. Pokud klient volá client.loginAsync('custom'); přihlášení, musí být /.auth/login/customvaše trasa . Trasu vlastního kontroleru ověřování můžete nastavit pomocí MapHttpRoute():

config.Routes.MapHttpRoute("custom", ".auth/login/custom", new { controller = "CustomAuth" });

Tip

loginAsync() Pomocí přístupu zajistíte, že ověřovací token se připojí ke každému následnému volání služby.

Postupy: Načtení ověřených informací o uživateli

Když je uživatel ověřen App Service, můžete získat přístup k přiřazeným ID uživatele a dalším informacím v back-endovém kódu .NET. Informace o uživateli je možné použít k rozhodování o autorizaci v back-endu. Následující kód získá ID uživatele přidružené k požadavku:

// Get the SID of the current user.
var claimsPrincipal = this.User as ClaimsPrincipal;
string sid = claimsPrincipal.FindFirst(ClaimTypes.NameIdentifier).Value;

Identifikátor SID je odvozen od ID uživatele specifického pro zprostředkovatele a je statický pro daného uživatele a zprostředkovatele přihlášení. Identifikátor SID má hodnotu null pro neplatné ověřovací tokeny.

App Service také umožňuje požadovat konkrétní deklarace identity od poskytovatele přihlášení. Každý zprostředkovatel identity může poskytnout další informace pomocí sady SDK zprostředkovatele identity. Můžete například použít facebookové Graph API pro informace o přátelách. Deklarace identity požadované v okně zprostředkovatele můžete zadat v Azure Portal. Některé deklarace identity vyžadují další konfiguraci u zprostředkovatele identity.

Následující kód volá metodu rozšíření GetAppServiceIdentityAsync pro získání přihlašovacích údajů, které zahrnují přístupový token potřebný k provedení požadavků na Facebook Graph API:

// Get the credentials for the logged-in user.
var credentials =
    await this.User
    .GetAppServiceIdentityAsync<FacebookCredentials>(this.Request);

if (credentials.Provider == "Facebook")
{
    // Create a query string with the Facebook access token.
    var fbRequestUrl = "https://graph.facebook.com/me/feed?access_token="
        + credentials.AccessToken;

    // Create an HttpClient request.
    var client = new System.Net.Http.HttpClient();

    // Request the current user info from Facebook.
    var resp = await client.GetAsync(fbRequestUrl);
    resp.EnsureSuccessStatusCode();

    // Do something here with the Facebook user information.
    var fbInfo = await resp.Content.ReadAsStringAsync();
}

Přidejte příkaz using pro System.Security.Principal poskytnutí metody Rozšíření GetAppServiceIdentityAsync .

Postupy: Omezení přístupu k datům pro autorizované uživatele

V předchozí části jsme ukázali, jak načíst ID uživatele ověřeného uživatele. Na základě této hodnoty můžete omezit přístup k datům a dalším prostředkům. Například přidání sloupce userId do tabulek a filtrování výsledků dotazu podle ID uživatele je jednoduchý způsob, jak omezit vrácená data pouze na autorizované uživatele. Následující kód vrátí řádky dat pouze v případě, že identifikátor SID odpovídá hodnotě ve sloupci UserId v tabulce TodoItem:

// Get the SID of the current user.
var claimsPrincipal = this.User as ClaimsPrincipal;
string sid = claimsPrincipal.FindFirst(ClaimTypes.NameIdentifier).Value;

// Only return data rows that belong to the current user.
return Query().Where(t => t.UserId == sid);

Metoda Query() vrátí metodu IQueryable , kterou může LINQ zpracovat filtrování.

Postupy: Přidání nabízených oznámení do projektu serveru

Přidejte nabízená oznámení do projektu serveru rozšířením objektu MobileAppConfiguration a vytvořením klienta Notification Hubs.

  1. V sadě Visual Studio klikněte pravým tlačítkem na projekt serveru a klikněte na Spravovat balíčky NuGet, vyhledejte Microsoft.Azure.Mobile.Server.Notificationsa potom klikněte na instalovat.

  2. Tento krok opakujte a nainstalujte balíček, který obsahuje klientskou knihovnu Microsoft.Azure.NotificationHubs Notification Hubs.

  3. V souboru App_Start/Startup.MobileApp.cs a během inicializace přidejte volání metody rozšíření AddPushNotifications():

     new MobileAppConfiguration()
         // other features...
         .AddPushNotifications()
         .ApplyTo(config);
    
  4. Přidejte následující kód, který vytvoří klienta Notification Hubs:

     // Get the settings for the server project.
     HttpConfiguration config = this.Configuration;
     MobileAppSettingsDictionary settings =
         config.GetMobileAppSettingsProvider().GetMobileAppSettings();
    
     // Get the Notification Hubs credentials for the Mobile App.
     string notificationHubName = settings.NotificationHubName;
     string notificationHubConnection = settings
         .Connections[MobileAppSettingsKeys.NotificationHubConnectionString].ConnectionString;
    
     // Create a new Notification Hub client.
     NotificationHubClient hub = NotificationHubClient
         .CreateClientFromConnectionString(notificationHubConnection, notificationHubName);
    

Teď můžete pomocí klienta Notification Hubs odesílat nabízená oznámení registrovaným zařízením. Další informace najdete v tématu Přidání nabízených oznámení do vaší aplikace. Další informace o Notification Hubs najdete v tématu Přehled služby Notification Hubs.

Postupy: Povolení cílených nabízených oznámení pomocí značek

Notification Hubs umožňuje odesílat cílená oznámení určitým registracím pomocí značek. Automaticky se vytvoří několik značek:

  • ID instalace identifikuje konkrétní zařízení.
  • ID uživatele založené na ověřeném identifikátoru SID identifikuje konkrétního uživatele.

ID instalace je možné získat přístup z vlastnosti installationId v MobileServiceClient. Následující příklad ukazuje, jak pomocí ID instalace přidat značku do konkrétní instalace v Notification Hubs:

hub.PatchInstallation("my-installation-id", new[]
{
    new PartialUpdateOperation
    {
        Operation = UpdateOperationType.Add,
        Path = "/tags",
        Value = "{my-tag}"
    }
});

Všechny značky poskytované klientem během registrace nabízených oznámení se při vytváření instalace ignorují back-endem. Pokud chcete klientovi povolit přidání značek do instalace, musíte vytvořit vlastní rozhraní API, které přidává značky pomocí předchozího vzoru.

Podívejte se na značky nabízených oznámení přidaných klientem v ukázce rychlého startu App Service Mobile Apps.

Postupy: Odesílání nabízených oznámení ověřenému uživateli

Když se ověřený uživatel zaregistruje k nabízeným oznámením, značka ID uživatele se automaticky přidá do registrace. Pomocí této značky můžete odesílat nabízená oznámení všem zařízením registrovaným touto osobou. Následující kód získá identifikátor SID uživatele, který žádost provede, a odešle nabízené oznámení šablony každé registraci zařízení pro danou osobu:

// Get the current user SID and create a tag for the current user.
var claimsPrincipal = this.User as ClaimsPrincipal;
string sid = claimsPrincipal.FindFirst(ClaimTypes.NameIdentifier).Value;
string userTag = "_UserId:" + sid;

// Build a dictionary for the template with the item message text.
var notification = new Dictionary<string, string> { { "message", item.Text } };

// Send a template notification to the user ID.
await hub.SendTemplateNotificationAsync(notification, userTag);

Při registraci nabízených oznámení z ověřeného klienta se před pokusem o registraci ujistěte, že je ověřování dokončené. Další informace najdete v tématu Nabízení uživatelům v ukázce rychlého startu App Service Mobile Apps pro back-end .NET.

Postupy: Ladění a řešení potíží se sadou .NET Server SDK

Azure App Service poskytuje několik technik ladění a řešení potíží pro ASP.NET aplikace:

protokolování

Do App Service diagnostických protokolů můžete zapisovat pomocí standardního zápisu trasování ASP.NET. Než budete moct zapisovat do protokolů, musíte v back-endu mobilní aplikace povolit diagnostiku.

Povolení diagnostiky a zápisu do protokolů:

  1. Postupujte podle pokynů v tématu Povolení protokolování aplikace (Windows).

  2. Do souboru kódu přidejte následující příkaz using:

     using System.Web.Http.Tracing;
    
  3. Vytvořte zapisovač trasování pro zápis z back-endu .NET do diagnostických protokolů následujícím způsobem:

     ITraceWriter traceWriter = this.Configuration.Services.GetTraceWriter();
     traceWriter.Info("Hello, World");
    
  4. Znovu publikujte serverový projekt a přejděte k back-endu mobilní aplikace a spusťte cestu kódu pomocí protokolování.

  5. Stáhněte a vyhodnoťte protokoly, jak je popsáno v souborech protokolů Accessu.

Místní ladění s ověřováním

Aplikaci můžete spustit místně a otestovat změny před jejich publikováním do cloudu. U většiny back-endů Azure Mobile Apps stiskněte klávesu F5 v sadě Visual Studio. Při použití ověřování je však potřeba vzít v úvahu některé další aspekty.

Musíte mít cloudovou mobilní aplikaci s nakonfigurovaným ověřováním nebo autorizací App Service a váš klient musí mít koncový bod cloudu zadaný jako alternativního hostitele přihlášení. Konkrétní požadované kroky najdete v dokumentaci pro vaši klientskou platformu.

Ujistěte se, že je na vašem mobilním back-endu nainstalovaný Microsoft.Azure.Mobile.Server.Authentication . Potom do spouštěcí HttpConfigurationtřídy OWIN vaší aplikace přidejte následující:MobileAppConfiguration

    app.UseAppServiceAuthentication(new AppServiceAuthenticationOptions()
    {
        SigningKey = ConfigurationManager.AppSettings["authSigningKey"],
        ValidAudiences = new[] { ConfigurationManager.AppSettings["authAudience"] },
        ValidIssuers = new[] { ConfigurationManager.AppSettings["authIssuer"] },
        TokenHandler = config.GetAppServiceTokenHandler()
    });

V předchozím příkladu byste měli nakonfigurovat nastavení aplikace authAudience a authIssuer v souboru Web.config na každou adresu URL kořenového adresáře aplikace pomocí schématu HTTPS. Podobně byste měli nastavit authSigningKey jako hodnotu podpisového klíče vaší aplikace. Získání podpisového klíče:

  1. Přejděte do aplikace v rámci Azure Portal
  2. Klikněte na Nástroje, Kudu, Go.
  3. Na webu Správy Kudu klikněte na Prostředí.
  4. Najděte hodnotu pro WEBSITE_AUTH_SIGNING_KEY.

V konfiguraci místní aplikace použijte podpisový klíč pro parametr authSigningKey . Váš mobilní back-end je teď vybavený k ověření tokenů při místním spuštění, který klient získá z cloudového koncového bodu.