无法在Blazor服务器上设置控制器



我正试图将MVC、WebAPI或任何控制器添加到我的Blazor Server项目中。

我读过很多关于这件事的SO问题、博客等等,比如这样。它们都不起作用。

无论我在我的";端点";或";应用程序";在我的";配置";或";ConfigureServices";方法,当我在调试中启动应用程序并尝试使用Postman发出请求时,它会超时。

我试过了:

添加控制器,如链接答案所示。

在我的启动中添加任何和所有这些:

  • 终点。MapControllers((
  • 端点。MapGet("/aaa",异步上下文=>等待上下文.Response.WriteAsync("Hello World!"(;(
  • 端点。映射默认ControllerRoute((
  • 应用程序。使用Mvc((
  • 应用程序。使用默认路由的Mvcs((

Postman既没有得到任何答案(超时(;获取"控制器的方法被触发。

我该怎么做才能让控制器正常工作?

我做了以下操作("在我的机器上工作"(:

  1. 创建一个新的BlazorApp:
dotnet new blazorserver -o BlazorApp --no-https
  1. 添加控制器:
namespace BlazorApp.Controllers
{
using Microsoft.AspNetCore.Mvc;
[ApiController]
public class TestController : ControllerBase
{
[HttpGet("test")]
public ActionResult<string> Test()
{
return "TODO";
}
}
}
  1. endpoints.MapControllers();添加到Satrtup.cs
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();            // new
endpoints.MapBlazorHub();              // existing
endpoints.MapFallbackToPage("/_Host"); // existing
});
  1. 运行应用

  2. 转到http://localhost:5000/test(您将得到"TODO"响应(

  3. 转到http://localhost:5000(您将看到Blazor页面(

编辑

@Tessaact在评论中提到,当查询纯HTTP时,该网站正在HTTPS上运行(因此不起作用(。

我知道已经太晚了,但我会在未来帮助一些人
在类似的程序中检查添加控制器

builder.Services.AddControllers();

当建设者是

var builder = WebApplication.CreateBuilder(args);

别忘了这一点:

var app = builder.Build();
app.MapControllers();
app.Run();

最新更新