我有一个简单的NET6应用程序.已添加控制器并正在try 测试.

运行它,我在Swagger页面上看到方法,在Swagger中执行该方法,它返回200,但它没有返回"Hello World".然后,我将记录器输出添加到控制器构造函数和方法中--无输出.问题的原因可能是什么?我的程序文件

using MTApp.Infra;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();
builder.Services.AddMvc();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
builder.Services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
builder.Services.AddDistributedMemoryCache();
builder.Services.AddSession(options =>
{
    options.IdleTimeout = TimeSpan.FromSeconds(1800);
    options.Cookie.HttpOnly = true;
    options.Cookie.IsEssential = true;
});
//builder.Services.AddSession();// !
var app = builder.Build();
app.UseSession(); //<--- add this line
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI(c =>
    {
        c.SwaggerEndpoint("/swagger/v1/swagger.json", "MTApp API V1");
    });
}
app.UseTenant();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
    endpoints.MapControllerRoute(name: "default", pattern: "{controller=Home}/{action=Index}/{id?}");
});
app.UseDeveloperExceptionPage();
app.UseHttpsRedirection();
app.MapControllers();
app.Run();

扩展名:

public static class TenantSecurityMiddlewareExtension
{
    public static IApplicationBuilder UseTenant(this IApplicationBuilder app)
    {
        app.UseMiddleware<TenantSecurityMiddleware>();
        return app;
    }
}

和我的控制器

using Microsoft.Extensions.Logging;
namespace MTApp.Controllers
{
    [ApiController]
    [Route("api/[controller]")]
    public class DobedoController : ControllerBase
    {
        private readonly ILogger<DobedoController> _logger;
        public DobedoController(ILogger<DobedoController> logger)
        {
            _logger = logger;
            _logger.LogInformation("DobedoController");
        }
        [HttpGet("GetHW2")]
        public string GetHW2()
        {
            _logger.LogInformation("DobedoController:HW2");
            return "Hello World2";
        }
    }
}

推荐答案

app.UseTenant();美元应该做些什么?

因为它在以下情况下对我有效:

  • 使用dotnet new webapi创建新的.NET 7 Web API.

  • 将模板控制器替换为您的模板控制器(顶部缺少using Microsoft.AspNetCore.Mvc;行,但在全局使用中可能会出现这种情况).

  • 将模板Program.cs替换为您的模板.

  • 将行注释为app.UseTenant()(因为它来自MTApp.Infra).

.net相关问答推荐

为什么 ULong > 16 位的数学会变得不稳定?

双精度的 C++ 和 C# 十六进制值之间的差异

CurrentCulture、InvariantCulture、CurrentUICulture 和 InstalledUICulture 之间的区别

.NET 应用程序的链接器状态(又名请先生,我可以有一个链接器2009 年版)

在目录中创建应用程序快捷方式

OpenCV的.Net(dotNet)包装器?

Linq查询分组并 Select 第一个项目

运算符重载 ==, !=, Equals

获取 .NET Framework 目录路径

如何将 UI Dispatcher 传递给 ViewModel

DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss") 返回上午时间而不是下午时间?

是否可以完全用托管的 .NET 语言编写 JIT 编译器(本地代码)

使用语句与最终try

beforefieldinit 标志有什么作用?

使用 LINQ 搜索树

如何在 C# 中使用迭代器反向读取文本文件

ADO.NET Entity Framework:更新向导不会添加表

在 C# 中转义无效的 XML 字符

在foreach循环中修改列表的最佳方法是什么?

什么时候使用 Tuple 和 KeyValuePair 比较好?