Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Följande länkar innehåller felsökningsvägledning:
- Felsöka ASP.NET Core i Azure App Service och IIS-
- Vanliga fel vid felsökning för Azure App Service och IIS med ASP.NET Core
- NDC Conference (London, 2018): Diagnostisera problem i ASP.NET Core Applications
- ASP.NET blogg: Felsöka ASP.NET grundläggande prestandaproblem
.NET Core SDK-varningar
Både 32-bitars- och 64-bitarsversionerna av .NET Core SDK är installerade
I dialogrutan Nytt projekt för ASP.NET Core kan följande varning visas:
Både 32-bitars- och 64-bitarsversioner av .NET Core SDK är installerade. Endast mallar från 64-bitarsversionerna som är installerade på "C:\Program Files\dotnet\sdk\" visas.
Den här varningen visas när både 32-bitarsversioner (x86) och 64-bitarsversioner (x64) av .NET Core SDK är installerade. Vanliga orsaker till att båda versionerna kan installeras är:
- Du laddade ursprungligen ned installationsprogrammet för .NET Core SDK med hjälp av en 32-bitars dator men kopierade den sedan över och installerade den på en 64-bitarsdator.
- 32-bitars .NET Core SDK installerades av ett annat program.
- Fel version laddades ned och installerades.
Avinstallera 32-bitars .NET Core SDK för att förhindra den här varningen. Avinstallera från Kontrollpanelens>program och funktioner>Avinstallera eller ändra ett program. Om du förstår varför varningen inträffar och dess konsekvenser kan du ignorera varningen.
.NET Core SDK är installerat på flera platser
I dialogrutan Nytt projekt för ASP.NET Core kan följande varning visas:
.NET Core SDK är installerat på flera platser. Endast mallar från SDK:erna som är installerade på "C:\Program Files\dotnet\sdk\" visas.
Det här meddelandet visas när du har minst en installation av .NET Core SDK i en katalog utanför C:\Program Files\dotnet\sdk\. Detta inträffar vanligtvis när .NET Core SDK har distribuerats på en dator med kopiera/klistra in i stället för MSI-installationsprogrammet.
Avinstallera alla 32-bitars .NET Core SDK:er och körningar för att förhindra den här varningen. Avinstallera från Kontrollpanelens>program och funktioner>Avinstallera eller ändra ett program. Om du förstår varför varningen inträffar och dess konsekvenser kan du ignorera varningen.
Inga .NET Core SDK:er identifierades
- I dialogrutan Nytt projekt i Visual Studio för ASP.NET Core kan följande varning visas: - Inga .NET Core SDK:er har identifierats, se till att de ingår i miljövariabeln - PATH.
- När du kör ett - dotnetkommando visas varningen som:- Det gick inte att hitta några installerade dotnet-SDK:er. 
Dessa varningar visas när miljövariabeln PATH inte pekar på några .NET Core SDK:er på datorn. Så här löser du problemet:
- Installera .NET Core SDK. Hämta det senaste installationsprogrammet från .NET-nedladdningar.
- Kontrollera att PATHmiljövariabeln pekar på platsen där SDK:t är installerat (C:\Program Files\dotnet\för 64-bitars/x64 ellerC:\Program Files (x86)\dotnet\för 32-bitars/x86). SDK-installationsprogrammet anger normaltPATH. Installera alltid samma bitness-SDK:er och körningar på samma dator.
SDK saknas efter att ha installerat .NET Core hosting-bundle
När du installerar .NET Core Hosting Bundle ändras PATH när .NET Core-körningen installeras så att den pekar på 32-bitarsversionen (x86) av .NET Core (C:\Program Files (x86)\dotnet\). Detta kan leda till att SDK:er saknas när kommandot 32-bitars (x86) .NET Core dotnet används (inga .NET Core SDK:er identifierades). Lös problemet genom att flytta C:\Program Files\dotnet\ till en position före C:\Program Files (x86)\dotnet\ på PATH.
Hämta data från en app
Om en app kan svara på begäranden kan du hämta följande data från appen med mellanprogram:
- Begäran: Metod, schema, värd, sökvägsbas, sökväg, frågesträng, rubriker
- Anslutning: Fjärr-IP-adress, fjärrport, lokal IP-adress, lokal port, klientcertifikat
- Identity: Namn, visningsnamn
- Konfigurationsinställningar
- Miljövariabler
Placera följande mellanprogramskod i början av Startup.Configure-metodens pipeline för bearbetning av begäranden. Miljön kontrolleras innan mellanprogrammet körs för att säkerställa att koden endast körs i utvecklingsmiljön.
Hämta miljön från Environment egenskapen WebApplication. Till exempel, if (app.Environment.IsDevelopment()) som i följande exempelkod.
using Microsoft.AspNetCore.Authentication;
using Microsoft.AspNetCore.Http.Features;
using Microsoft.AspNetCore.Server.IISIntegration;
using System.Text;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddAuthentication();
var app = builder.Build();
app.MapGet("/", () => "Hello World!");
if (app.Environment.IsDevelopment())
{
    app.Run(async (context) =>
    {
        var sb = new StringBuilder();
        var nl = System.Environment.NewLine;
        var rule = string.Concat(nl, new string('-', 40), nl);
        var authSchemeProvider = app.Services.
                       GetRequiredService<IAuthenticationSchemeProvider>();
        sb.Append($"Request{rule}");
        sb.Append($"{DateTimeOffset.Now}{nl}");
        sb.Append($"{context.Request.Method} {context.Request.Path}{nl}");
        sb.Append($"Scheme: {context.Request.Scheme}{nl}");
        sb.Append($"Host: {context.Request.Headers["Host"]}{nl}");
        sb.Append($"PathBase: {context.Request.PathBase.Value}{nl}");
        sb.Append($"Path: {context.Request.Path.Value}{nl}");
        sb.Append($"Query: {context.Request.QueryString.Value}{nl}{nl}");
        sb.Append($"Connection{rule}");
        sb.Append($"RemoteIp: {context.Connection.RemoteIpAddress}{nl}");
        sb.Append($"RemotePort: {context.Connection.RemotePort}{nl}");
        sb.Append($"LocalIp: {context.Connection.LocalIpAddress}{nl}");
        sb.Append($"LocalPort: {context.Connection.LocalPort}{nl}");
        sb.Append($"ClientCert: {context.Connection.ClientCertificate}{nl}{nl}");
        sb.Append($"Identity{rule}");
        sb.Append($"User: {context.User.Identity.Name}{nl}");
        var scheme = await authSchemeProvider
            .GetSchemeAsync(IISDefaults.AuthenticationScheme);
        sb.Append($"DisplayName: {scheme?.DisplayName}{nl}{nl}");
        sb.Append($"Headers{rule}");
        foreach (var header in context.Request.Headers)
        {
            sb.Append($"{header.Key}: {header.Value}{nl}");
        }
        sb.Append(nl);
        sb.Append($"WebSockets{rule}");
        if (context.Features.Get<IHttpUpgradeFeature>() != null)
        {
            sb.Append($"Status: Enabled{nl}{nl}");
        }
        else
        {
            sb.Append($"Status: Disabled{nl}{nl}");
        }
        sb.Append($"Configuration{rule}");
        var config = builder.Configuration;
         foreach (var pair in config.AsEnumerable())
        {
            sb.Append($"{pair.Key}: {pair.Value}{nl}"); 
        }
        sb.Append(nl);
        sb.Append(nl);
        sb.Append($"Environment Variables{rule}");
        var vars = System.Environment.GetEnvironmentVariables();
        foreach (var key in vars.Keys.Cast<string>().OrderBy(key => key,
            StringComparer.OrdinalIgnoreCase))
        {
            var value = vars[key];
            sb.Append($"{key}: {value}{nl}");
        }
        context.Response.ContentType = "text/plain";
        await context.Response.WriteAsync(sb.ToString());
    });
}
app.Run();
Felsöka ASP.NET Core-appar
Följande länkar innehåller information om felsökning ASP.NET Core-appar.
- Felsöka ASP Core i Linux
- Felsöka .NET Core på Unix via SSH
- Snabbstart: Felsöka ASP.NET med Visual Studio-felsökningsprogrammet
- Mer felsökningsinformation finns i det här GitHub-problemet .
Följande länkar innehåller felsökningsvägledning:
- Felsöka ASP.NET Core i Azure App Service och IIS-
- Vanliga fel vid felsökning för Azure App Service och IIS med ASP.NET Core
- NDC Conference (London, 2018): Diagnostisera problem i ASP.NET Core Applications
- ASP.NET blogg: Felsöka ASP.NET grundläggande prestandaproblem
.NET Core SDK-varningar
Både 32-bitars- och 64-bitarsversionerna av .NET Core SDK är installerade
I dialogrutan Nytt projekt för ASP.NET Core kan följande varning visas:
Både 32-bitars- och 64-bitarsversioner av .NET Core SDK är installerade. Endast mallar från 64-bitarsversionerna som är installerade på "C:\Program Files\dotnet\sdk\" visas.
Den här varningen visas när både 32-bitarsversioner (x86) och 64-bitarsversioner (x64) av .NET Core SDK är installerade. Vanliga orsaker till att båda versionerna kan installeras är:
- Du laddade ursprungligen ned installationsprogrammet för .NET Core SDK med hjälp av en 32-bitars dator men kopierade den sedan över och installerade den på en 64-bitarsdator.
- 32-bitars .NET Core SDK installerades av ett annat program.
- Fel version laddades ned och installerades.
Avinstallera 32-bitars .NET Core SDK för att förhindra den här varningen. Avinstallera från Kontrollpanelens>program och funktioner>Avinstallera eller ändra ett program. Om du förstår varför varningen inträffar och dess konsekvenser kan du ignorera varningen.
.NET Core SDK är installerat på flera platser
I dialogrutan Nytt projekt för ASP.NET Core kan följande varning visas:
.NET Core SDK är installerat på flera platser. Endast mallar från SDK:erna som är installerade på "C:\Program Files\dotnet\sdk\" visas.
Det här meddelandet visas när du har minst en installation av .NET Core SDK i en katalog utanför C:\Program Files\dotnet\sdk\. Detta inträffar vanligtvis när .NET Core SDK har distribuerats på en dator med kopiera/klistra in i stället för MSI-installationsprogrammet.
Avinstallera alla 32-bitars .NET Core SDK:er och körningar för att förhindra den här varningen. Avinstallera från Kontrollpanelens>program och funktioner>Avinstallera eller ändra ett program. Om du förstår varför varningen inträffar och dess konsekvenser kan du ignorera varningen.
Inga .NET Core SDK:er identifierades
- I dialogrutan Nytt projekt i Visual Studio för ASP.NET Core kan följande varning visas: - Inga .NET Core SDK:er har identifierats, se till att de ingår i miljövariabeln - PATH.
- När du kör ett - dotnetkommando visas varningen som:- Det gick inte att hitta några installerade dotnet-SDK:er. 
Dessa varningar visas när miljövariabeln PATH inte pekar på några .NET Core SDK:er på datorn. Så här löser du problemet:
- Installera .NET Core SDK. Hämta det senaste installationsprogrammet från .NET-nedladdningar.
- Kontrollera att PATHmiljövariabeln pekar på platsen där SDK:t är installerat (C:\Program Files\dotnet\för 64-bitars/x64 ellerC:\Program Files (x86)\dotnet\för 32-bitars/x86). SDK-installationsprogrammet anger normaltPATH. Installera alltid samma bitness-SDK:er och körningar på samma dator.
SDK saknas efter att ha installerat .NET Core hosting-bundle
När du installerar .NET Core Hosting Bundle ändras PATH när .NET Core-körningen installeras så att den pekar på 32-bitarsversionen (x86) av .NET Core (C:\Program Files (x86)\dotnet\). Detta kan leda till att SDK:er saknas när kommandot 32-bitars (x86) .NET Core dotnet används (inga .NET Core SDK:er identifierades). Lös problemet genom att flytta C:\Program Files\dotnet\ till en position före C:\Program Files (x86)\dotnet\ på PATH.
Hämta data från en app
Om en app kan svara på begäranden kan du hämta följande data från appen med mellanprogram:
- Begäran: Metod, schema, värd, sökvägsbas, sökväg, frågesträng, rubriker
- Anslutning: Fjärr-IP-adress, fjärrport, lokal IP-adress, lokal port, klientcertifikat
- Identity: Namn, visningsnamn
- Konfigurationsinställningar
- Miljövariabler
Placera följande mellanprogramskod i början av Startup.Configure-metodens pipeline för bearbetning av begäranden. Miljön kontrolleras innan mellanprogrammet körs för att säkerställa att koden endast körs i utvecklingsmiljön.
Använd någon av följande metoder för att hämta miljön:
- IHostingEnvironmentMata in i- Startup.Configuremetoden och kontrollera miljön med den lokala variabeln. Följande exempelkod visar den här metoden.
- Tilldela miljön till en egenskap i - Startupklassen. Kontrollera miljön med hjälp av egenskapen (till exempel- if (Environment.IsDevelopment())).
public void Configure(IApplicationBuilder app, IHostingEnvironment env, 
    IConfiguration config)
{
    if (env.IsDevelopment())
    {
        app.Run(async (context) =>
        {
            var sb = new StringBuilder();
            var nl = System.Environment.NewLine;
            var rule = string.Concat(nl, new string('-', 40), nl);
            var authSchemeProvider = app.ApplicationServices
                .GetRequiredService<IAuthenticationSchemeProvider>();
            sb.Append($"Request{rule}");
            sb.Append($"{DateTimeOffset.Now}{nl}");
            sb.Append($"{context.Request.Method} {context.Request.Path}{nl}");
            sb.Append($"Scheme: {context.Request.Scheme}{nl}");
            sb.Append($"Host: {context.Request.Headers["Host"]}{nl}");
            sb.Append($"PathBase: {context.Request.PathBase.Value}{nl}");
            sb.Append($"Path: {context.Request.Path.Value}{nl}");
            sb.Append($"Query: {context.Request.QueryString.Value}{nl}{nl}");
            sb.Append($"Connection{rule}");
            sb.Append($"RemoteIp: {context.Connection.RemoteIpAddress}{nl}");
            sb.Append($"RemotePort: {context.Connection.RemotePort}{nl}");
            sb.Append($"LocalIp: {context.Connection.LocalIpAddress}{nl}");
            sb.Append($"LocalPort: {context.Connection.LocalPort}{nl}");
            sb.Append($"ClientCert: {context.Connection.ClientCertificate}{nl}{nl}");
            sb.Append($"Identity{rule}");
            sb.Append($"User: {context.User.Identity.Name}{nl}");
            var scheme = await authSchemeProvider
                .GetSchemeAsync(IISDefaults.AuthenticationScheme);
            sb.Append($"DisplayName: {scheme?.DisplayName}{nl}{nl}");
            sb.Append($"Headers{rule}");
            foreach (var header in context.Request.Headers)
            {
                sb.Append($"{header.Key}: {header.Value}{nl}");
            }
            sb.Append(nl);
            sb.Append($"WebSockets{rule}");
            if (context.Features.Get<IHttpUpgradeFeature>() != null)
            {
                sb.Append($"Status: Enabled{nl}{nl}");
            }
            else
            {
                sb.Append($"Status: Disabled{nl}{nl}");
            }
            sb.Append($"Configuration{rule}");
            foreach (var pair in config.AsEnumerable())
            {
                sb.Append($"{pair.Path}: {pair.Value}{nl}");
            }
            sb.Append(nl);
            sb.Append($"Environment Variables{rule}");
            var vars = System.Environment.GetEnvironmentVariables();
            foreach (var key in vars.Keys.Cast<string>().OrderBy(key => key, 
                StringComparer.OrdinalIgnoreCase))
            {
                var value = vars[key];
                sb.Append($"{key}: {value}{nl}");
            }
            context.Response.ContentType = "text/plain";
            await context.Response.WriteAsync(sb.ToString());
        });
    }
}
Felsöka ASP.NET Core-appar
Följande länkar innehåller information om felsökning ASP.NET Core-appar.
- Felsöka ASP Core i Linux
- Felsöka .NET Core på Unix via SSH
- Snabbstart: Felsöka ASP.NET med Visual Studio-felsökningsprogrammet
- Mer felsökningsinformation finns i det här GitHub-problemet .
ASP.NET Core