řešení potíží a ladění ASP.NET Corech projektů
Autor: Rick Anderson
Následující odkazy obsahují pokyny k odstraňování potíží:
- Řešení ASP.NET Core potíží s Azure App Service a službou IIS
- Referenční informace k běžným chybám Azure App Service a IIS s ASP.NET Core
- norwegian developers conference konference (londýn, 2018): diagnostikování problémů v aplikacích ASP.NET Core
- ASP.NET Blog: řešení potíží s výkonem ASP.NET Core výkonu
Upozornění .NET Core SDK
Nainstalují se 32 i 64 verze .NET Core SDK.
v dialogovém okně nový Project pro ASP.NET Core se může zobrazit následující upozornění:
Jsou nainstalovány 32 a 64 bitové verze .NET Core SDK. Jsou zobrazeny pouze šablony z 64 verzí nainstalovaných v umístění C: \ Program Files \ dotnet \ SDK \ .
Toto upozornění se zobrazí, 32 Pokud jsou nainstalovány 32bitové verze .NET Core SDK (x86) i 64-bit (x64). Mezi běžné příčiny můžou být nainstalované obě verze:
- Původně jste stáhli instalační službu .NET Core SDK pomocí 32 počítače, ale pak jste ji zkopírovali napříč a nainstalovali na 64 počítač.
- 32 bitová .NET Core SDK byla nainstalována jinou aplikací.
- Byla stažena a nainstalována nesprávná verze.
Pokud chcete zabránit tomuto upozornění, odinstalujte 32 .NET Core SDK bitů. Odinstalujte ji pomocí ovládacího panelu > programy a funkce > Odinstalovat nebo změnit program. Pokud rozumíte tomu, proč k upozornění dojde a jeho důsledky, můžete upozornění ignorovat.
.NET Core SDK je nainstalováno v několika umístěních.
v dialogovém okně nový Project pro ASP.NET Core se může zobrazit následující upozornění:
.NET Core SDK je nainstalován v několika umístěních. Zobrazí se pouze šablony sady SDK nainstalované v umístění C: \ Program Files \ dotnet \ SDK \ .
Tato zpráva se zobrazí, pokud máte alespoň jednu instalaci .NET Core SDK v adresáři mimo jazyk C: \ Program Files \ dotnet \ SDK \. K tomu obvykle dochází, když .NET Core SDK nasazené na počítači pomocí kopírování a vkládání místo instalačního programu MSI.
Pokud chcete zabránit tomuto upozornění, odinstalujte všechny 32 sady .NET Core SDK a moduly runtime. Odinstalujte ji pomocí ovládacího panelu > programy a funkce > Odinstalovat nebo změnit program. Pokud rozumíte tomu, proč k upozornění dojde a jeho důsledky, můžete upozornění ignorovat.
Nezjistily se žádné sady .NET Core SDK.
v dialogovém okně Visual Studio nové Project pro ASP.NET Core se může zobrazit následující upozornění:
Nezjistily se žádné sady .NET Core SDK, ujistěte se, že jsou zahrnuté v proměnné prostředí
PATH.Při provádění
dotnetpříkazu se zobrazí upozornění jako:Nebylo možné najít žádné nainstalované sady dotnet SDK.
Tato upozornění se zobrazí, pokud proměnná prostředí PATH neodkazuje na žádné sady SDK .NET Core v počítači. Řešení tohoto problému:
- Nainstalujte .NET Core SDK. Získejte nejnovější instalační program ze souborů ke stažení pro rozhraní .NET.
- Ověřte, zda
PATHProměnná prostředí odkazuje na umístění, kde je nainstalována sada SDK (C:\Program Files\dotnet\pro 64 bitů/x64 neboC:\Program Files (x86)\dotnet\pro 32bitovou verzi/x86). Instalační program sady SDK obvykle nastavíPATH. Vždy nainstalujte stejné sady bitová verze SDK a moduly runtime na stejném počítači.
Chybějící sada SDK po instalaci hostující sady .NET Core
Instalace hostující sady .NET Core upravuje PATH při instalaci modulu runtime .NET Core, který odkazuje na 32 (x86) verzi .NET Core ( C:\Program Files (x86)\dotnet\ ). To může mít za následek chybějící sady SDK, když se použije příkaz .NET Core (x86) 32 dotnet (nejsou zjištěny žádné sady .NET Core SDK). Chcete-li tento problém vyřešit, přejděte na C:\Program Files\dotnet\ pozici před C:\Program Files (x86)\dotnet\ dnem 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: metoda, schéma, hostitel, pathbase, cesta, řetězec dotazu, záhlaví
- 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í
Vložte následující kód middleware na začátek Startup.Configure kanálu zpracování požadavků metody. Prostředí je zkontrolováno před spuštěním middlewaru, aby bylo zajištěno, že kód je spuštěn pouze ve vývojovém prostředí.
K získání prostředí použijte některý z následujících přístupů:
Vloží
IHostingEnvironmentdoStartup.Configuremetody a zkontroluje prostředí pomocí místní proměnné. Následující vzorový kód demonstruje tento přístup.Přiřaďte prostředí k vlastnosti ve
Startuptřídě. Ověřte 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.
- Ladění ASP Core v systému Linux
- Ladění .NET Core v systému UNIX přes SSH
- rychlý start: ladění ASP.NET pomocí ladicího programu Visual Studio
- další informace o ladění najdete v tomto GitHubm problému .