【问题标题】:NET 6: Controller method is not reachableNET 6:控制器方法不可访问
【发布时间】:2022-12-03 02:31:22
【问题描述】:

我有一个简单的 NET 6 应用程序。添加了一个控制器并尝试测试。

运行它,我在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();

和我的控制器

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";
        }
    }
}

【问题讨论】:

    标签: .net asp.net-core-webapi .net-6.0


    【解决方案1】:

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

    因为它对我有用:

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

    • 用你的替换模板控制器(顶部缺少 using Microsoft.AspNetCore.Mvc; 行,但你可能在全局使用中有它)。

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

    • app.UseTenant() 评论该行(因为它来自MTApp.Infra)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-16
      • 2014-01-11
      • 1970-01-01
      • 2016-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多