Ř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íží:
- Řešení potíží s ASP.NET Core v Azure App Service a ve službě IIS
- Řešení běžných chyb v Azure App Service a ve službě IIS souvisejících s ASP.NET Core
- Konference NDC (Londýn, 2018): Diagnostika problémů v základních aplikacích ASP.NET
- blog ASP.NET: Řešení potíží s ASP.NET základními problémy s výkonem
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é
PATH
prostř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 neboC:\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říkladif (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.