Sdílet prostřednictvím


Řešení potíží s projekty ASP.NET Core a jejich ladění

Autor: Rick Anderson

Následující odkazy obsahují pokyny pro řešení potíží:

Upozornění sady .NET Core SDK

Jsou nainstalovány 32bitové i 64bitové verze sady .NET Core SDK.

V dialogovém okně Nový projekt pro ASP.NET Core se může zobrazit následující upozornění:

Jsou nainstalovány 32bitové i 64bitové verze sady .NET Core SDK. Zobrazí se pouze šablony z 64bitových verzí nainstalovaných v C:\Program Files\dotnet\sdk\.

Toto upozornění se zobrazí, když jsou nainstalované 32bitové (x86) i 64bitové (x64) verze sady .NET Core SDK . Mezi běžné důvody instalace obou verzí patří:

  • Instalační program sady .NET Core SDK jste původně stáhli pomocí 32bitového počítače, ale pak jste ho zkopírovali a nainstalovali na 64bitový počítač.
  • 32bitová sada .NET Core SDK byla nainstalována jinou aplikací.
  • Byla stažena a nainstalována nesprávná verze.

Odinstalujte 32bitovou sadu .NET Core SDK, abyste zabránili tomuto upozornění. Odinstalujte program z Ovládací panely> Programs and Features>Uninstall nebo změňte program. Pokud pochopíte, proč k upozornění dojde a jaké to má důsledky, můžete upozornění ignorovat.

Sada .NET Core SDK je nainstalovaná v několika umístěních.

V dialogovém okně Nový projekt pro ASP.NET Core se může zobrazit následující upozornění:

Sada .NET Core SDK je nainstalovaná ve více umístěních. Zobrazí se pouze šablony ze sad SDK nainstalovaných ve složce C:\Program Files\dotnet\sdk\.

Tato zpráva se zobrazí, pokud máte alespoň jednu instalaci sady .NET Core SDK v adresáři mimo C:\Program Files\dotnet\sdk\. K tomu obvykle dochází v případě, že se sada .NET Core SDK nasadí na počítač pomocí kopírování a vložení místo instalačního programu MSI.

Odinstalujte všechny 32bitové sady SDK a moduly runtime .NET Core, abyste zabránili tomuto upozornění. Odinstalujte program z Ovládací panely> Programs and Features>Uninstall nebo změňte program. Pokud pochopíte, proč k upozornění dojde a jaké to má důsledky, můžete upozornění ignorovat.

Nebyly zjištěny žádné sady .NET Core SDK.

  • V dialogovém okně Nový projekt sady Visual Studio pro ASP.NET Core se může zobrazit následující upozornění:

    Nebyly zjištěny žádné sady .NET Core SDK, ujistěte se, že jsou zahrnuty do proměnné PATHprostředí .

  • Při spuštění dotnet příkazu se upozornění zobrazí takto:

    Nebylo možné najít žádné nainstalované sady DOtnet SDK.

Tato upozornění se zobrazí, když proměnná PATH prostředí neodkazuje na žádné sady .NET Core SDK na počítači. Tento problém vyřešíte takto:

  • Nainstalujte sadu .NET Core SDK. Získejte nejnovější instalační program ze souborů ke stažení .NET.
  • Ověřte, že PATH proměnná prostředí odkazuje na umístění, kde je sada SDK nainstalovaná (C:\Program Files\dotnet\ pro 64bitovou verzi nebo x64 nebo C:\Program Files (x86)\dotnet\ 32bitovou/x86). Instalační program sady SDK obvykle nastaví PATH. Vždy nainstalujte stejné sady SDK bitness a moduly runtime na stejný počítač.

Chybějící sada SDK po instalaci sady .NET Core Hosting Bundle

Instalace sady hostování .NET Core upraví PATH , když nainstaluje modul runtime .NET Core tak, aby odkazovat na 32bitovou (x86) verzi .NET Core (C:\Program Files (x86)\dotnet\). To může vést k chybějícím sadám SDK při použití 32bitového příkazu .NET Core dotnet (x86) (nebyly zjištěny žádné sady SDK .NET Core). Chcete-li tento problém vyřešit, přejděte C:\Program Files\dotnet\ na pozici před C:\Program Files (x86)\dotnet\ .PATH

Získání dat z aplikace

Pokud aplikace dokáže reagovat na požadavky, můžete z aplikace získat následující data pomocí middlewaru:

  • Request: Method, scheme, host, pathbase, path, query string, headers
  • Připojení: Vzdálená IP adresa, vzdálený port, místní IP adresa, místní port, klientský certifikát
  • Identity: Název, zobrazovaný název
  • Nastavení konfigurace
  • Proměnné prostředí

Na začátek kanálu zpracování požadavků metody umístěte následující kód middlewaruStartup.Configure. Prostředí se kontroluje před spuštěním middlewaru, aby se zajistilo, že se kód spustí jenom ve vývojovém prostředí.

K získání prostředí použijte některý z následujících přístupů:

  • Vložte do IHostingEnvironment Startup.Configure metody a zkontrolujte prostředí s místní proměnnou. Tento přístup ukazuje následující ukázkový kód.

  • Přiřaďte prostředí k vlastnosti ve Startup třídě. Zkontrolujte prostředí pomocí vlastnosti (například 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());
        });
    }
}

Ladění aplikací ASP.NET Core

Následující odkazy obsahují informace o ladění aplikací ASP.NET Core.