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

Det här avsnittet visar hur du använder .NET-serverdels-SDK 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

.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 vissa 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 Portal 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 Portal

Om du vill skapa en App Service mobil serverdel följer du antingen snabbstartsguiden eller följer dessa steg:

  1. Logga in på Azure Portal.

  2. Välj +NY>webb + mobilapp> och ange sedan ett namn för mobile apps-serverdelen.

  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.

    Inställningarna för App Service plan avgör var, vilka funktioner, kostnader och beräkningsresurser 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 översikten över Azure App Service planer.

  5. Välj Skapa. Det här steget skapar mobile apps-serverdelen.

  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 istä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.

    Välja en databas

  8. I fönstret Ny server anger du ett unikt servernamn i rutan Servernamn , anger en inloggning och ett 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 innan du fortsätter.

På bladet Kom igång , under Skapa ett tabell-API, väljer du C# som serverdelsspråk. Klicka på Ladda ned, extrahera de komprimerade projektfilerna 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 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 över 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 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-webbapp.
  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.

Anvisningar: Ladda ned och initiera SDK

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:n 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 på samma sätt 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 startklassen Webbgeneral>>OWIN. En klass genereras med följande attribut:

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

I metoden för Configuration() 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 några tillagda 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 Portal 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);

Tilläggsmetoderna som används är:

  • AddMobileAppHomeController() innehåller standardstartsidan för Azure Mobile Apps.
  • MapApiControllers() tillhandahåller anpassade API-funktioner för WebAPI-styrenheter som är dekorerade med [MobileAppController] attributet .
  • AddTables() tillhandahåller en mappning av /tables slutpunkterna till tabellkontrollanter.
  • AddTablesWithEntityFramework() är en förkortning för att mappa /tables slutpunkterna 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 MobileAppConfiguration-objektet .

  • Microsoft.Azure.Mobile.Server.Snabbstart Stöder grundläggande mobile apps-konfiguration. Har lagts 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 tillgänglig på Azure Portal.
  • Microsoft.Azure.Mobile.Server.Home Implementerar standardinställningen att den här mobilappen är igång för 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 Aktiverar 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-tilläggsmetoder .
  • 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 tilläggsmetoden MapLegacyCrossDomainController .
  • Microsoft.Azure.Mobile.Server.Login tillhandahåller metoden AppServiceLoginHandler.CreateToken(), som är en statisk metod som används vid anpassade autentiseringsscenarier.

Anvisningar: 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 metoderna som finns tillgängliga där.

  1. Återskapa projektet i Visual Studio 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 markera 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. Kontrollera publiceringsprofilinformationen och klicka på Publicera.

    När mobilappens serverdel har publicerats visas en landningssida som anger att det lyckades.

Anvisningar: Definiera en tabellkontrollant

Definiera en tabellkontrollant för att exponera en SQL-tabell för mobila klienter. Konfiguration av en tabellkontrollant kräver tre steg:

  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. Ett 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 heter 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 Azure SDK installerat 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 Tabellkontrollant 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 skapas åt dig.
  4. Klicka på Lägg till.

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

Anvisningar: Justera växlingsstorleken för tabellen

Som standard returnerar Azure Mobile Apps 50 poster per begäran. Sidindelning 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 växlingsstorleken för tabellen ökar du "tillåten frågestorlek" på serversidan och sidstorleken på klientsidan Serversidans "tillåtna frågestorlek" justeras med hjälp av EnableQuery attributet :

[EnableQuery(PageSize = 500)]

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

Anvisningar: Definiera en anpassad API-kontrollant

Den anpassade API-kontrollanten ger de mest grundläggande funktionerna i mobilappens serverdel genom att exponera en slutpunkt. Du kan registrera en mobilspecifik API-kontrollant 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 Web API 2 Controller – Tom och klicka på Lägg till.

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

  3. I den nya kontrollantklassfilen lägger du till följande using-instruktion:

     using Microsoft.Azure.Mobile.Server.Config;
    
  4. Använd attributet [MobileAppController] för API-kontrollantens klassdefinition, 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 metoden för MapApiControllers-tillägget , som i följande exempel:

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

Du kan också använda tilläggsmetoden UseDefaultConfiguration() i stället för MapApiControllers(). Alla kontrollanter som inte har MobileAppControllerAttribute tillämpade kan fortfarande nås av klienter, men det kanske inte används korrekt av klienter som använder någon Klient-SDK för mobilappar.

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-mellanprogrammet. När du installerar paketet Microsoft.Azure.Mobile.Server.Quickstart 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 projektfilen Startup.cs lägger du till följande kodrad i början av konfigurationsmetoden :

     app.UseAppServiceAuthentication(config);
    

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

  3. [Authorize] Lägg till attributet 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 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 Portal. Detta aktiverar WEBSITE_AUTH_SIGNING_KEY miljövariabeln när den finns.

Om du inte vill använda någon av App Service-autentiserings-/auktoriseringsproviders 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 validering av användarautentiseringsuppgifter. Du kan till exempel kontrollera saltade och hashade lösenord i en databas. I exemplet nedan isValidAssertion() ansvarar metoden (definieras 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 information från användaren. Informationen skickas sedan till API:et med ett HTTP POST-standardanrop. När servern verifierar försäkran utfärdas en token med hjälp av AppServiceLoginHandler.CreateToken() metoden . ApiController bör inte använda attributet [MobileAppController] .

Ett exempel login på en å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 prägla 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 även innehålla andra anspråk och ett förfallodatum. Den utfärdade token måste minst innehålla ett ämnesanspråk (under).

Du kan använda standardklientmetoden loginAsync() 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 autentiseringskontrollanten med hjälp av MapHttpRoute():

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

Tips

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

Anvisningar: Hämta 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.

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 Portal. Vissa anspråk kräver ytterligare konfiguration med identitetsprovidern.

Följande kod anropar metoden GetAppServiceIdentityAsync-tillägg 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 för System.Security.Principal att ange metoden GetAppServiceIdentityAsync-tillägg .

Anvisningar: Begränsa dataåtkomst för behöriga användare

I föregående avsnitt visade vi hur du hämtar användar-ID 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 till 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ägg till push-meddelanden till din app. Mer information om Notification Hubs finns i Översikt över Notification Hubs.

Anvisningar: 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}"
    }
});

Eventuella taggar som tillhandahålls av klienten under push-meddelanderegistreringen ignoreras av serverdelen när installationen skapas. Om du vill göra det möjligt för en klient att lägga till taggar i installationen måste du skapa ett anpassat API som lägger till taggar med föregående mönster.

Ett exempel finns i Push-meddelandetaggar som lagts till av klienten i snabbstartsexemplet App Service Mobile Apps slutförda.

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 användaren som gör begäran och skickar ett push-meddelande för mallar 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 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 Skicka till användare i snabbstartsexemplet App Service Mobile Apps slutfört för .NET-serverdelen.

Anvisningar: Felsöka .NET Server SDK

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

Loggning

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 med hjälp av -instruktionen i kodfilen:

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

     ITraceWriter traceWriter = this.Configuration.Services.GetTraceWriter();
     traceWriter.Info("Hello, World");
    
  4. Publicera om serverprojektet och få åtkomst till mobilappens serverdel för att köra kodsökvägen med loggningen.

  5. Ladda ned och utvärdera loggarna enligt beskrivningen i Access-loggfiler.

Lokal felsökning med autentisering

Du kan köra ditt program 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 klienten 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 MobileAppConfiguration att ha tillämpats på :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 så att de ä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. Gå till din app i Azure Portal
  2. Klicka på Verktyg, Kudu, Go.
  3. Klicka på Miljö på kuduhanteringswebbplatsen.
  4. Hitta 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 token när den körs lokalt, vilket klienten hämtar token från den molnbaserade slutpunkten.