Dela via


Arbeta med .NET-server-SDK för Azure Mobile Apps

Det här avsnittet visar hur du använder .NET-server-SDK:et i viktiga Azure App Service Mobile Apps-scenarier. Azure Mobile Apps SDK hjälper dig att arbeta med mobila klienter från ditt ASP.NET program.

Tips/Råd

.NET Server SDK för Azure Mobile Apps är öppen källkod på GitHub. Lagringsplatsen innehåller all källkod, inklusive hela server-SDK-enhetstestpaketet och några exempelprojekt.

Referensdokumentation

Referensdokumentationen för server-SDK finns här: Azure Mobile Apps .NET-referens.

Anvisningar: Skapa en .NET Mobile App-serverdel

Om du startar ett nytt projekt kan du skapa ett App Service-program med antingen Azure-portalen eller Visual Studio. Du kan köra App Service-programmet lokalt eller publicera projektet till din molnbaserade App Service-mobilapp.

Om du lägger till mobila funktioner i ett befintligt projekt kan du läsa avsnittet Ladda ned och initiera SDK .

Skapa en .NET-serverdel med hjälp av Azure-portalen

Om du vill skapa en mobil serverdel för App Service följer du antingen snabbstartsguiden eller följer de här stegen:

  1. Logga in på Azure-portalen.

  2. Välj +NY>Webb + Mobil>Mobilapp, och ange sedan ett namn för din mobilapplikationers serverdel.

  3. För Resursgrupp väljer du en befintlig resursgrupp eller skapar en ny (med samma namn som din app).

  4. För App Service-plan väljs standardplanen (på standardnivån). Du kan också välja en annan plan eller skapa en ny.

    App Service-planens inställningar avgör platsen, funktionerna, kostnaden och beräkningsresurserna som är associerade med din app. Mer information om App Service-planer och hur du skapar en ny plan på en annan prisnivå och på önskad plats finns i Översikt över Azure App Service-planer på djupet.

  5. Välj Skapa. Det här steget skapar Mobile Apps-backend.

  6. I fönstret Inställningar för den nya mobile apps-serverdelen väljer du Snabbstarta> klientappplattformen >Anslut en databas.

    Val för att ansluta en databas

  7. I fönstret Lägg till dataanslutning väljer du SQL Database>Skapa en ny databas. Ange databasnamnet, välj en prisnivå och välj sedan Server. Du kan återanvända den nya databasen. Om du redan har en databas på samma plats kan du i stället välja Använd en befintlig databas. Vi rekommenderar inte att du använder en databas på en annan plats på grund av bandbreddskostnader och högre svarstid.

    Att välja en databas

  8. I fönstret Ny server anger du ett unikt servernamn i rutan Servernamn , anger ett inloggnings- och lösenord, väljer Tillåt Azure-tjänster att komma åt servern och väljer OK. Det här steget skapar den nya databasen.

  9. I fönstret Lägg till dataanslutning väljer du Anslutningssträng, anger inloggnings- och lösenordsvärdena för databasen och väljer OK.

    Vänta några minuter tills databasen har distribuerats framgångsrikt innan du fortsätter.

På bladet Kom igång går du till Skapa ett tabell-API och väljer C# som serverdelsspråk. Klicka på Ladda ned, extrahera komprimerade projektfiler till din lokala dator och öppna lösningen i Visual Studio.

Skapa en .NET-serverdel med Visual Studio 2017

Installera Azure-arbetsbelastningen via Visual Studio Installer för att publicera till Azure Mobile Apps-projektet från Visual Studio. När du har installerat SDK:et skapar du ett ASP.NET program med hjälp av följande steg:

  1. Öppna dialogrutan Nytt projekt (från Fil>nytt>projekt...).
  2. Expandera Visual C# och välj Webb.
  3. Välj ASP.NET webbprogram (.NET Framework).
  4. Fyll i projektnamnet. Klicka sedan på OK.
  5. Välj Azure Mobile App i listan med mallar.
  6. Klicka på OK för att skapa lösningen.
  7. Högerklicka på projektet i Solution Explorer och välj Publicera... och välj sedan App Service som publiceringsmål.
  8. Följ anvisningarna för att autentisera och välj en ny eller befintlig Azure App Service att publicera.

Skapa en .NET-serverdel med Visual Studio 2015

Installera Azure SDK för .NET (version 2.9.0 eller senare) för att skapa ett Azure Mobile Apps-projekt i Visual Studio. När du har installerat SDK:et skapar du ett ASP.NET program med hjälp av följande steg:

  1. Öppna dialogrutan Nytt projekt (från Fil>nytt>projekt...).
  2. Expandera Mallar>Visual C# och välj Webb.
  3. Välj ASP.NET webbprogram.
  4. Fyll i projektnamnet. Klicka sedan på OK.
  5. Under ASP.NET 4.5.2-mallar väljer du Azure Mobile App. Kontrollera Värd i molnet för att skapa en mobil serverdel i molnet som du kan publicera projektet till.
  6. Klicka på OK.

Gör så här: Ladda ned och initiera SDK:et

SDK:et är tillgängligt på NuGet.org. Det här paketet innehåller de grundläggande funktioner som krävs för att komma igång med SDK:et. Om du vill initiera SDK:t måste du utföra åtgärder på HttpConfiguration-objektet .

Installera SDK:n

Om du vill installera SDK högerklickar du på serverprojektet i Visual Studio, väljer Hantera NuGet-paket, söker efter paketet Microsoft.Azure.Mobile.Server och klickar sedan på Installera.

Initiera serverprojektet

Ett .NET-serverdelsprojekt initieras ungefär som andra ASP.NET projekt, genom att inkludera en OWIN-startklass. Kontrollera att du har refererat till NuGet-paketet Microsoft.Owin.Host.SystemWeb. Om du vill lägga till den här klassen i Visual Studio högerklickar du på serverprojektet och väljer Lägg till>nytt objekt och sedan Startklass för webbgeneral>>OWIN. En klass genereras med följande attribut:

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

Configuration() I metoden för din OWIN-startklass använder du ett HttpConfiguration-objekt för att konfigurera Azure Mobile Apps-miljön. I följande exempel initieras serverprojektet utan ytterligare funktioner:

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

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

    app.UseWebApi(config);
}

Om du vill aktivera enskilda funktioner måste du anropa tilläggsmetoder i MobileAppConfiguration-objektet innan du anropar ApplyTo. Följande kod lägger till standardvägarna till alla API-kontrollanter som har attributet [MobileAppController] under initieringen:

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

Serverns snabbstart från Azure-portalen anropar UseDefaultConfiguration(). Detta motsvarar följande konfiguration:

    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);

De tilläggsmetoder som används är:

  • AddMobileAppHomeController() tillhandahåller standardstartsidan för Azure Mobile Apps.
  • MapApiControllers() tillhandahåller anpassade API-funktioner för WebAPI-styrenheter som är dekorerade med attributet [MobileAppController].
  • AddTables() innehåller en mappning av /tables slutpunkter till tabellkontrollanter.
  • AddTablesWithEntityFramework() är en kort hand för att mappa /tables slutpunkter med entity framework-baserade kontrollanter.
  • AddPushNotifications() tillhandahåller en enkel metod för att registrera enheter för Notification Hubs.
  • MapLegacyCrossDomainController() tillhandahåller CORS-standardhuvuden för lokal utveckling.

SDK-tillägg

Följande NuGet-baserade tilläggspaket innehåller olika mobila funktioner som kan användas av ditt program. Du aktiverar tillägg under initieringen med hjälp av Objektet MobileAppConfiguration .

  • Microsoft.Azure.Mobile.Server.Snabbstart Stöder den grundläggande konfigurationen av mobilappar. Lades till i konfigurationen genom att anropa tilläggsmetoden UseDefaultConfiguration under initieringen. Det här tillägget innehåller följande tillägg: Meddelanden, autentisering, entitet, tabeller, korsdomäner och hempaket. Det här paketet används av snabbstarten Mobile Apps som är tillgänglig på Azure-portalen.
  • Microsoft.Azure.Mobile.Server.Home Implementerar standardsidan den här mobila appens igång-sida på webbplatsroten. Lägg till i konfigurationen genom att anropa tilläggsmetoden AddMobileAppHomeController .
  • Microsoft.Azure.Mobile.Server.Tables innehåller klasser för att arbeta med data och konfigurera datapipelinen. Lägg till i konfigurationen genom att anropa tilläggsmetoden AddTables .
  • Microsoft.Azure.Mobile.Server.Entity Gör att Entity Framework kan komma åt data i SQL Database. Lägg till i konfigurationen genom att anropa tilläggsmetoden AddTablesWithEntityFramework .
  • Microsoft.Azure.Mobile.Server.Authentication Möjliggör autentisering och konfigurerar OWIN-mellanprogrammet som används för att verifiera token. Lägg till i konfigurationen genom att anropa AddAppServiceAuthentication och IAppBuilder.UseAppServiceAuthentication med hjälp av deras extension methods.
  • Microsoft.Azure.Mobile.Server.Notifications Aktiverar push-meddelanden och definierar en push-registreringsslutpunkt. Lägg till i konfigurationen genom att anropa tilläggsmetoden AddPushNotifications .
  • Microsoft.Azure.Mobile.Server.CrossDomain Skapar en kontrollant som hanterar data till äldre webbläsare från din mobilapp. Lägg till i konfigurationen genom att anropa metoden MapLegacyCrossDomainController-tillägg .
  • Microsoft.Azure.Mobile.Server.Login Tillhandahåller metoden AppServiceLoginHandler.CreateToken(), som är en statisk metod som används vid anpassade autentiseringsscenarier.

Gör så här: Publicera serverprojektet

Det här avsnittet visar hur du publicerar ditt .NET-serverdelsprojekt från Visual Studio. Du kan också distribuera serverdelsprojektet med Git eller någon av de andra metoder som finns tillgängliga där.

  1. I Visual Studio återskapar du projektet för att återställa NuGet-paket.

  2. Högerklicka på projektet i Solution Explorer och klicka på Publicera. Första gången du publicerar måste du definiera en publiceringsprofil. När du redan har definierat en profil kan du välja den och klicka på Publicera.

  3. Om du uppmanas att välja ett publiceringsmål klickar du på Microsoft Azure App Service>Nästa och loggar sedan in (om det behövs) med dina Azure-autentiseringsuppgifter. Visual Studio laddar ned och lagrar dina publiceringsinställningar på ett säkert sätt direkt från Azure.

  4. Välj din prenumeration, välj Resurstyp från Visa, expandera Mobilapp och klicka på mobilappens serverdel och klicka sedan på OK.

  5. Verifiera publiceringsprofilinformationen och klicka på Publicera.

    När mobilappens serverdel har publicerats visas en landningssida som anger att den har slutförts.

Gör så här: Definiera en tabellkontrollant

Definiera en tabellstyrenhet för att exponera en SQL-tabell för mobila klienter. Det krävs tre steg för att konfigurera en tabellkontrollant:

  1. Skapa en DTO-klass (Data Transfer Object).
  2. Konfigurera en tabellreferens i klassen Mobile DbContext.
  3. Skapa en tabellkontrollant.

Ett dataöverföringsobjekt (DTO) är ett vanligt C#-objekt som ärver från EntityData. Till exempel:

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

DTO används för att definiera tabellen i SQL-databasen. Om du vill skapa databasposten lägger du till en DbSet<> egenskap i den DbContext som du använder. I standardprojektmallen för Azure Mobile Apps kallas 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()));
    }
}

Om du har Installerat Azure SDK kan du nu skapa en malltabellkontrollant på följande sätt:

  1. Högerklicka på mappen Controllers och välj Lägg till>kontrollant....
  2. Välj alternativet Tabellstyrenhet för Azure Mobile Apps och klicka sedan på Lägg till.
  3. I dialogrutan Lägg till kontrollant :
    • I listrutan Modellklass väljer du din nya DTO.
    • I listrutan DbContext väljer du klassen Mobile Service DbContext.
    • Kontrollantnamnet har skapats åt dig.
  4. Klicka på Lägg till.

Snabbstartsserverprojektet innehåller ett exempel på en enkel TodoItemController.

Så justerar du tabellens sidstorlek

Som standard returnerar Azure Mobile Apps 50 poster per begäran. Växling säkerställer att klienten inte binder upp användargränssnittstråden eller servern för länge, vilket säkerställer en bra användarupplevelse. Om du vill ändra storlek på tabellväxlingen ökar du serversidans "tillåtna frågestorlek" och sidstorleken på klientsidan Serversidans "tillåtna frågestorlek" justeras med attributet EnableQuery:

[EnableQuery(PageSize = 500)]

Kontrollera att PageSize är samma eller större än den storlek som klienten begär. Mer information om hur du ändrar klientsidans storlek finns i den specifika howto-dokumentationen för klienten.

Gör så här: Definiera en anpassad API-kontrollant

Den anpassade API-kontrollanten tillhandahåller de mest grundläggande funktionerna till mobilappens serverdel genom att exponera en slutpunkt. Du kan registrera en mobilspecifik API-styrenhet med hjälp av attributet [MobileAppController]. Attributet MobileAppController registrerar vägen, konfigurerar Mobile Apps JSON-serialiseraren och aktiverar klientversionskontroll.

  1. Högerklicka på mappen Controllers i Visual Studio och klicka sedan på Lägg till>kontrollant, välj Webb-API 2-kontrollant – Tom och klicka på Lägg till.

  2. Ange ett kontrollantnamn, till exempel CustomController, och klicka på Lägg till.

  3. I den nya klassfilen för kontroller ska du lägga till följande using-sats:

     using Microsoft.Azure.Mobile.Server.Config;
    
  4. Använd attributet [MobileAppController] för api-kontrollantklassdefinitionen, som i följande exempel:

     [MobileAppController]
     public class CustomController : ApiController
     {
           //...
     }
    
  5. I filen App_Start/Startup.MobileApp.cs lägger du till ett anrop till mapapiControllers-tilläggsmetoden , som i följande exempel:

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

Du kan också använda UseDefaultConfiguration()-metoden i stället för MapApiControllers(). Alla styrenheter som inte har MobileAppControllerAttribute tillämpade kan fortfarande nås av klienter, men det kan inte användas korrekt av klienter som använder någon Mobile App-klient-SDK.

Anvisningar: Arbeta med autentisering

Azure Mobile Apps använder App Service-autentisering/auktorisering för att skydda din mobila serverdel. Det här avsnittet visar hur du utför följande autentiseringsrelaterade uppgifter i ditt .NET-serverprojekt:

Anvisningar: Lägga till autentisering i ett serverprojekt

Du kan lägga till autentisering i serverprojektet genom att utöka Objektet MobileAppConfiguration och konfigurera OWIN-mellanprogram. När du installerar Microsoft.Azure.Mobile.Server.Quickstart-paketet och anropar tilläggsmetoden UseDefaultConfiguration kan du gå vidare till steg 3.

  1. Installera paketet Microsoft.Azure.Mobile.Server.Authentication i Visual Studio.

  2. I Startup.cs-projektfilen lägger du till följande kodrad i början av konfigurationsmetoden :

     app.UseAppServiceAuthentication(config);
    

    Den här OWIN-mellanprogramskomponenten validerar token som utfärdats av den associerade App Service-gatewayen.

  3. Lägg till attributet [Authorize] till valfri kontrollant eller metod som kräver autentisering.

Mer information om hur du autentiserar klienter till mobile apps-serverdelen finns i Lägga till autentisering i din app.

Anvisningar: Använda anpassad autentisering för ditt program

Viktigt!

För att kunna aktivera anpassad autentisering måste du först aktivera App Service-autentisering utan att välja en provider för din App Service i Azure-portalen. Detta aktiverar WEBSITE_AUTH_SIGNING_KEY miljövariabeln när den finns.

Om du inte vill använda någon av App Service-autentiserings-/auktoriseringsprovidrar kan du implementera ditt eget inloggningssystem. Installera paketet Microsoft.Azure.Mobile.Server.Login för att hjälpa till med generering av autentiseringstoken. Ange din egen kod för att verifiera användarautentiseringsuppgifter. Du kan till exempel kontrollera saltade och hashade lösenord i en databas. I exemplet nedan ansvarar isValidAssertion()-metoden (definierad någon annanstans) för dessa kontroller.

Den anpassade autentiseringen exponeras genom att skapa en ApiController och exponera register och login åtgärder. Klienten bör använda ett anpassat användargränssnitt för att samla in informationen från användaren. Informationen skickas sedan till API:et med ett standard-HTTP POST-anrop. När servern har verifierat försäkran utfärdas en token med hjälp av metoden AppServiceLoginHandler.CreateToken(). ApiController ska inte använda attributet [MobileAppController] .

Ett exempel login åtgärd:

    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();
        }
    }

I föregående exempel är LoginResult och LoginResultUser serialiserbara objekt som exponerar nödvändiga egenskaper. Klienten förväntar sig att inloggningssvar returneras som JSON-objekt i formuläret:

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

Metoden AppServiceLoginHandler.CreateToken() innehåller en målgrupp och en utfärdarparameter . Båda dessa parametrar är inställda på URL:en för programroten med hjälp av HTTPS-schemat. På samma sätt bör du ange secretKey som värdet för ditt programs signeringsnyckel. Distribuera inte signeringsnyckeln i en klient eftersom den kan användas för att mynta nycklar och personifiera användare. Du kan hämta signeringsnyckeln när den finns i App Service genom att referera till miljövariabeln WEBSITE_AUTH_SIGNING_KEY . Om det behövs i en lokal felsökningskontext följer du anvisningarna i avsnittet Lokal felsökning med autentisering för att hämta nyckeln och lagra den som en programinställning.

Den utfärdade token kan också innehålla andra anspråk och ett utgångsdatum. Den utfärdade token måste minst innehålla ett sub-påstående.

Du kan stödja standardklientens loginAsync() metod genom att överbelasta autentiseringsvägen. Om klienten anropar client.loginAsync('custom'); för att logga in måste vägen vara /.auth/login/custom. Du kan ange vägen för den anpassade autentiseringsstyrenheten med hjälp av MapHttpRoute():

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

Tips/Råd

Med hjälp av metoden loginAsync() ser du till att autentiseringstoken är kopplad till varje efterföljande anrop till tjänsten.

Så här hämtar du autentiserad användarinformation

När en användare autentiseras av App Service kan du komma åt det tilldelade användar-ID:t och annan information i .NET-serverdelskoden. Användarinformationen kan användas för att fatta auktoriseringsbeslut i serverdelen. Följande kod hämtar användar-ID:t som är associerat med en begäran:

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

SID härleds från det providerspecifika användar-ID:t och är statiskt för en viss användare och inloggningsprovider. SID är null för ogiltiga autentiseringstoken.

Med App Service kan du också begära specifika anspråk från din inloggningsprovider. Varje identitetsprovider kan ge mer information med hjälp av identitetsproviderns SDK. Du kan till exempel använda Facebook Graph API för information om vänner. Du kan ange anspråk som begärs på providerbladet i Azure-portalen. Vissa anspråk kräver ytterligare konfiguration med identitetsprovidern.

Följande kod anropar metoden GetAppServiceIdentityAsync-tillägget för att hämta inloggningsuppgifterna, som inkluderar den åtkomsttoken som krävs för att göra begäranden mot 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();
}

Lägg till en using-instruktion för System.Security.Principal för att förse GetAppServiceIdentityAsync-metoden med en tillägg.

Gör så här: Begränsa dataåtkomst för behöriga användare

I föregående avsnitt visade vi hur du hämtar användar-ID:t för en autentiserad användare. Du kan begränsa åtkomsten till data och andra resurser baserat på det här värdet. Att till exempel lägga till en userId-kolumn i tabeller och filtrera frågeresultaten efter användar-ID är ett enkelt sätt att begränsa returnerade data endast till behöriga användare. Följande kod returnerar endast datarader när SID matchar värdet i kolumnen UserId i tabellen 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);

Metoden Query() returnerar en IQueryable som kan manipuleras av LINQ för att hantera filtrering.

Anvisningar: Lägga till push-meddelanden i ett serverprojekt

Lägg till push-meddelanden i serverprojektet genom att utöka Objektet MobileAppConfiguration och skapa en Notification Hubs-klient.

  1. Högerklicka på serverprojektet i Visual Studio och klicka på Hantera NuGet-paket, sök Microsoft.Azure.Mobile.Server.Notificationsefter och klicka sedan på Installera.

  2. Upprepa det här steget för att installera Microsoft.Azure.NotificationHubs paketet, som innehåller Notification Hubs-klientbiblioteket.

  3. I App_Start/Startup.MobileApp.cs och lägg till ett anrop till tilläggsmetoden AddPushNotifications() under initieringen:

     new MobileAppConfiguration()
         // other features...
         .AddPushNotifications()
         .ApplyTo(config);
    
  4. Lägg till följande kod som skapar en Notification Hubs-klient:

     // 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);
    

Nu kan du använda Notification Hubs-klienten för att skicka push-meddelanden till registrerade enheter. Mer information finns i Lägga till push-meddelanden i din app. Mer information om Notification Hubs finns i Översikt över Notification Hubs.

Gör så här: Aktivera riktad push med hjälp av taggar

Med Notification Hubs kan du skicka riktade meddelanden till specifika registreringar med hjälp av taggar. Flera taggar skapas automatiskt:

  • Installations-ID:t identifierar en specifik enhet.
  • Användar-ID:t baserat på det autentiserade SID:t identifierar en specifik användare.

Installations-ID:t kan nås från egenskapen installationIdMobileServiceClient. I följande exempel visas hur du använder ett installations-ID för att lägga till en tagg i en specifik installation i Notification Hubs:

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

Taggar som tillhandahålls av klienten under registreringen av push-meddelanden ignoreras av serverdelen när installationen skapas. Om du vill att en klient ska kunna lägga till taggar i installationen måste du skapa ett anpassat API som lägger till taggar med hjälp av föregående mönster.

Se Klienttillagda push-meddelandetaggar i det avslutade snabbstartsexemplet för App Service Mobile Apps för ett exempel.

Anvisningar: Skicka push-meddelanden till en autentiserad användare

När en autentiserad användare registrerar sig för push-meddelanden läggs en användar-ID-tagg automatiskt till i registreringen. Med den här taggen kan du skicka push-meddelanden till alla enheter som registrerats av den personen. Följande kod hämtar SID för den användare som gör begäran och skickar ett mall-push-meddelande till varje enhetsregistrering för den personen.

// 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);

När du registrerar dig för push-meddelanden från en autentiserad klient kontrollerar du att autentiseringen är klar innan du försöker registrera dig. Mer information finns i Push-meddelanden till användare i det slutförda snabbstartsexemplet för App Service Mobile Apps för .NET-backend.

Så här: Debugga och felsöka .NET Server SDK

Azure App Service innehåller flera felsöknings- och felsökningstekniker för ASP.NET program:

Loggning / Skogsavverkning

Du kan skriva till App Service-diagnostikloggar med hjälp av standard-ASP.NET spårningsskrivning. Innan du kan skriva till loggarna måste du aktivera diagnostik i mobilappens serverdel.

Så här aktiverar du diagnostik och skriver till loggarna:

  1. Följ stegen i Aktivera programloggning (Windows).

  2. Lägg till följande instruktion med hjälp av i kodfilen:

     using System.Web.Http.Tracing;
    
  3. Skapa en spårningsskrivare för att skriva från .NET-serverdelen till diagnostikloggarna enligt följande:

     ITraceWriter traceWriter = this.Configuration.Services.GetTraceWriter();
     traceWriter.Info("Hello, World");
    
  4. Publicera om ditt serverprojekt och få åtkomst till mobilappens backend för att exekvera kodvägen med loggningen.

  5. Ladda ned och utvärdera loggarna enligt beskrivningen i Åtkomstloggfiler.

Lokal felsökning med autentisering

Du kan köra programmet lokalt för att testa ändringar innan du publicerar dem i molnet. Tryck på F5 i Visual Studio för de flesta Azure Mobile Apps-serverdelar. Det finns dock några ytterligare överväganden när du använder autentisering.

Du måste ha en molnbaserad mobilapp med App Service-autentisering/auktorisering konfigurerad, och din klient måste ha molnslutpunkten angiven som alternativ inloggningsvärd. Se dokumentationen för klientplattformen för de specifika steg som krävs.

Kontrollera att din mobila serverdel har Microsoft.Azure.Mobile.Server.Authentication installerat. Lägg sedan till följande i programmets OWIN-startklass efter att MobileAppConfiguration har tillämpats på din HttpConfiguration:

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

I föregående exempel bör du konfigurera programinställningarna authAudience och authIssuer i din Web.config-fil till att var och en är URL:en för programroten med hjälp av HTTPS-schemat. På samma sätt bör du ange authSigningKey som värdet för ditt programs signeringsnyckel. Så här hämtar du signeringsnyckeln:

  1. Navigera till din app i Azure-portalen
  2. Klicka på Verktyg, Kudu, Go.
  3. Klicka på Miljö på kuduhanteringswebbplatsen.
  4. Leta reda på värdet för WEBSITE_AUTH_SIGNING_KEY.

Använd signeringsnyckeln för parametern authSigningKey i din lokala programkonfiguration. Din mobila serverdel är nu utrustad för att verifiera tokens när den körs lokalt, som klienten hämtar från den molnbaserade slutpunkten.