Kann nicht debuggen .NET 8.0 Web -API -Controller mit IIS- und SSL -ZertifikatenC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Kann nicht debuggen .NET 8.0 Web -API -Controller mit IIS- und SSL -Zertifikaten

Post by Anonymous »

Hintergrund
Ich verwende .NET 8.0 in einem kleinen Testprojekt, damit ich lernen kann, wie man einige viel größere .NET -Framework -Projekte migriert. Ich habe daran gearbeitet, die Projektunterschiede/Nuancen von Visual Studio 2022 mit .NET 8.0 ausreichend zu verstehen. Dieser Code funktioniert in einer viel größeren Lösung mit einem .NET 8.0 -Clientprojekt, das eine Website im Ordner wwwroot enthält. Ich kann den Befehl client abrufen nicht auf meine Controller sehen/debuggen. Ich habe dieses Projekt erstellt, um festzustellen, ob der serverseitige Web-API-Controller in einem eigenständigen Projekt mithilfe der im Root der Standard-Projekt Templete erstellten Datei webapiserver.http erstellt wurde. Ich habe das gleiche Debugging -Problem beobachtet, das mit den größeren zwei Projektlösungen verbunden ist. Ich habe das Internet durchsucht, konnte aber nicht herausfinden, wie diese Top-Level-Projektdatei identifiziert werden kann, da sein Name der Projektname ist. Da es also an Informationen über die Datei fehlte, habe ich davon ausgegangen, dass .NET 8.0 -Haltepunkte auch in einem Controller getroffen werden sollten. Ist diese Annahme korrekt?

net8.0
enable
enable


False


False









//Here is the test controller code.
// breakpoints were NOT HIT as noted below.
using Microsoft.AspNetCore.Mvc;
namespace WebApiServer.Controllers {
[Route("api/[controller]")]
[ApiController]
public class SendEmailController : ControllerBase {
[HttpPost("poststring")]
public string SendMail(string emailTo) {
try {
// Breakpoint is solid red, but never hit when debugging.
System.IO.File.AppendAllText(@"c:\temp\myControllerTextFile.txt", emailTo + " received from client.\n");
return "string sent";
} catch {
// Breakpoint is solid red, but never hit when debugging.
return "string NOT sent";
}
}
[HttpGet("getvalue")]
public string GetValue() {
// Breakpoint is solid red, but never hit when debugging.
var aVAlue = "a Server value";
System.IO.File.AppendAllText(@"c:\temp\SendEmailController.txt", aVAlue);
return aVAlue;
}
}
}
< /code>
Hier sind andere Projektdateien. < /p>
//appsettings.json
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*"
}

//launchSettings.json
{
"profiles": {
"IIS": {
"commandName": "Project",
"workingDirectory": "C:\\Users\\MyName\\Documents\\Visual Studio 2022\\Projects\\WebBlogSolution\\WebApiServer",
//"launchUrl": "SSL://myDomain.com", // used in larger project.
"launchUrl": "SSL://WebApiServer.myDomain.com",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"dotnetRunMessages": true
},
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"commandName": "IIS",
"iis": {
"applicationUrl": "NOSSL://localhost/WebApiServer",
"sslPort": 0
}
}
}
}

//web.config












//Program.cs
// The following is a complete listing of the Program.cs file.
// All breakpoints were hit in this file, and I could single-step in the code.
using WebApiServer.Controllers;
var builder = WebApplication.CreateBuilder(args);// Same as default project.
//The Same Origin Policy disallows reading the remote resource
builder.Services.AddCors(options => {
options.AddPolicy("AllowSpecificOrigin",
builder => {
// Added client-side application's origin here
builder.WithOrigins("SSL://myDomain.com,NOSSL://myDomain.com")
.AllowAnyHeader()
.AllowAnyMethod()
.SetIsOriginAllowed(origin => true); // allow any origin;
});
});
builder.Services.AddControllers();// Same as default project.
builder.Services.AddHostedService(); // Register preload logic
var app = builder.Build();// Same as default project.
app.UsePathBase("/WebApiServer"); //
Die Datei startUpInitializer.cs wird an den entsprechenden Haltepunkten gestoppt. Das Folgende ist ein Timeline -Ausdruck für das Start- und Stopp -Aktion -Haltepunkt in dieser Klasse. < /P>
| Date/Time | Breakpoint Names |
|4/30/2025 2:20:38 PM|=== StartAsync ===|
|4/30/2025 2:20:39 PM|=== StartedAsync ===|
|4/30/2025 2:21:30 PM|=== StoppingAsync ===|
|4/30/2025 2:21:34 PM|=== StopAsync ===|
|4/30/2025 2:21:36 PM|=== StoppedAsync ===|

//Startup Initializer Code
namespace WebApiServer.Controllers {
// Working startup code.
public class StartupInitializer : IHostedLifecycleService {
private DateTime dateTimeNow = DateTime.Now;
public Task StartingAsync(CancellationToken cancellationToken) {
// Breakpoint added below
dateTimeNow = DateTime.Now;
if (File.Exists(@"c:\temp\myTextFile.txt")) {
File.AppendAllText(@"c:\temp\myTextFile.txt", dateTimeNow + " === StartingAsync ===\n");
}
// Your preload logic (e.g., load config, warm-up DB, etc.)
return Task.CompletedTask;
}
public Task StartedAsync(CancellationToken cancellationToken) {
// Breakpoint added below
dateTimeNow = DateTime.Now;
if (File.Exists(@"c:\temp\myTextFile.txt")) {
File.AppendAllText(@"c:\temp\myTextFile.txt", dateTimeNow + " === StartedAsync ===\n");
}
return Task.CompletedTask;
}
public Task StoppingAsync(CancellationToken cancellationToken) {
// Breakpoint added below
dateTimeNow = DateTime.Now;
if (File.Exists(@"c:\temp\myTextFile.txt")) {
File.AppendAllText(@"c:\temp\myTextFile.txt", dateTimeNow + " === StoppingAsync ===\n");
}
return Task.CompletedTask;
}
public Task StoppedAsync(CancellationToken cancellationToken) {
// Breakpoint added below
dateTimeNow = DateTime.Now;
if (File.Exists(@"c:\temp\myTextFile.txt")) {
File.AppendAllText(@"c:\temp\myTextFile.txt", dateTimeNow + " === StoppedAsync ===\n");
}
return Task.CompletedTask;
}
Task IHostedService.StartAsync(CancellationToken cancellationToken) {
// Breakpoint added below
dateTimeNow = DateTime.Now;
Task task = Task.CompletedTask;
if (File.Exists(@"c:\temp\myTextFile.txt")) {
File.WriteAllText(@"c:\temp\myTextFile.txt", String.Empty);
File.AppendAllText(@"c:\temp\myTextFile.txt", dateTimeNow + " === StartAsync ===\n");
}
return task;
}
Task IHostedService.StopAsync(CancellationToken cancellationToken) {
// Breakpoint added below
dateTimeNow = DateTime.Now;
Task task = Task.CompletedTask;
if (File.Exists(@"c:\temp\myTextFile.txt")) {
File.AppendAllText(@"c:\temp\myTextFile.txt", dateTimeNow + " === StopAsync ===\n");
}
return task;
}
}
}
< /code>
Ich habe wahrscheinlich einige Fehler in den Setup -Dateien gemacht oder etwas enthalten, das in .NET 8.0 erforderlich ist. Ich gehe davon aus, dass einige Probleme möglicherweise mit der Datei launderns.json
liegen, da einige Beispielprojekte mit Iisexpress und ohne Zertifikate mit Debugging funktionieren. Ich habe nie klare Beispiele für die Verwendung von IIS gefunden, die in meinem größeren Projektcode gearbeitet haben. Ich habe diese Datei schließlich durch Versuch und Irrtum zusammengeschlagen und es schien zu funktionieren, außer dass es debugging. Zu diesem Zeitpunkt weiß ich nicht, wie ich dieses Debugging -Problem beseitigen kann.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post