无法在 Blazor 服务器上设置控制器
Unable to setup a controller on Blazor Server
我正在尝试向我的 Blazor Server 项目添加 MVC、WebAPI 或任何控制器。
我已经阅读了很多关于此事的 SO 问题、博客等,例如 this。 None 他们工作。
当我在调试中启动我的应用程序并尝试使用 Postman 发出请求时,无论我在“Configure”或“ConfigureServices”方法中向我的“端点”或“应用程序”添加什么,它都会超时。
我试过了:
完全按照链接答案中所示添加控制器。
在我的启动中添加所有这些:
- endpoints.MapControllers()
- endpoints.MapGet("/aaa", async context => await context.Response.WriteAsync("Hello World!");
- endpoints.MapDefaultControllerRoute()
- app.UseMvc()
- app.UseMvcWithDefaultRoute()
Postman 没有得到任何答案(超时),我在控制器的“Get”方法中设置的断点也没有被触发。
我该怎么做才能让控制器工作?
我做了以下(“在我的机器上工作”):
- 创建一个新的 BlazorApp:
dotnet new blazorserver -o BlazorApp --no-https
- 添加控制器:
namespace BlazorApp.Controllers
{
using Microsoft.AspNetCore.Mvc;
[ApiController]
public class TestController : ControllerBase
{
[HttpGet("test")]
public ActionResult<string> Test()
{
return "TODO";
}
}
}
- 将
endpoints.MapControllers();
添加到 Satrtup.cs
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers(); // new
endpoints.MapBlazorHub(); // existing
endpoints.MapFallbackToPage("/_Host"); // existing
});
运行 应用
转到 http://localhost:5000/test(您将获得 "TODO"
响应)
转到 http://localhost:5000(您将看到 Blazor 页面)
编辑
@Tessaract 在评论中提到该站点 运行 在 HTTPS 上运行,而纯 HTTP 正在被查询(因此不起作用)。
我正在尝试向我的 Blazor Server 项目添加 MVC、WebAPI 或任何控制器。
我已经阅读了很多关于此事的 SO 问题、博客等,例如 this。 None 他们工作。
当我在调试中启动我的应用程序并尝试使用 Postman 发出请求时,无论我在“Configure”或“ConfigureServices”方法中向我的“端点”或“应用程序”添加什么,它都会超时。
我试过了:
完全按照链接答案中所示添加控制器。
在我的启动中添加所有这些:
- endpoints.MapControllers()
- endpoints.MapGet("/aaa", async context => await context.Response.WriteAsync("Hello World!");
- endpoints.MapDefaultControllerRoute()
- app.UseMvc()
- app.UseMvcWithDefaultRoute()
Postman 没有得到任何答案(超时),我在控制器的“Get”方法中设置的断点也没有被触发。
我该怎么做才能让控制器工作?
我做了以下(“在我的机器上工作”):
- 创建一个新的 BlazorApp:
dotnet new blazorserver -o BlazorApp --no-https
- 添加控制器:
namespace BlazorApp.Controllers
{
using Microsoft.AspNetCore.Mvc;
[ApiController]
public class TestController : ControllerBase
{
[HttpGet("test")]
public ActionResult<string> Test()
{
return "TODO";
}
}
}
- 将
endpoints.MapControllers();
添加到Satrtup.cs
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers(); // new
endpoints.MapBlazorHub(); // existing
endpoints.MapFallbackToPage("/_Host"); // existing
});
运行 应用
转到 http://localhost:5000/test(您将获得
"TODO"
响应)转到 http://localhost:5000(您将看到 Blazor 页面)
编辑
@Tessaract 在评论中提到该站点 运行 在 HTTPS 上运行,而纯 HTTP 正在被查询(因此不起作用)。