ASP.NET - 如何 Return Web 响应和视图?
ASP.NET - How To Return Both A Web Response And A View?
我有一个 servers
控制器,其操作符合...
[ApiController]
[Route("[controller]")]
[Consumes("application/json")]
public class ServersController : Controller
{
public ServersController(IMemoryCache memoryCache) => Cache = memoryCache;
private IMemoryCache Cache { get; }
[HttpGet(Name = "Get Servers")]
public IActionResult GetServers()
=> Ok(Cache.Get<List<ServerGetDTO>>(Context.ServerList));
}
...而且我还有一个剃须刀页面...
@page "/servers"
<PageTitle>Get Servers</PageTitle>
<h1>Gets The Servers (Only Via Response, For Now)</h1>
我正在添加 razor/blazor 内容 ...
builder.Services.AddRazorPages();
builder.Services.AddServerSideBlazor();
app.UseStaticFiles();
app.UseRouting();
app.UseEndpoints(endpoints => endpoints.MapRazorPages());
app.MapBlazorHub();
... 但是当我导航到 https://.../servers
时,我没有收到我期望的 JSON 响应。期望是导航到页面向端点发出 Get
请求,然后我将获得要在前端呈现的视图以及服务器列表作为 JSON 作为响应Get
电话。
我做错了什么?
更新 #1:在我的 API 之上添加 Blazor 之后,我现在注意到 Swagger returns HTML 在调用 https://.../servers
端点时,所以 HTML 文档和 JSON 响应似乎是相互排斥的。我几乎可以肯定我遗漏了什么,我会继续调查。
更新#2:好的,我已经弄明白了。既然我知道问题出在哪里,事后看来,这个问题感觉很愚蠢。这是我的第一个 Blazor 实验,现在我知道我是从对架构级别的技术的误解开始的。基本上,我已经将现有的 API Blazor Server 项目固定在了上面,而事实上,我应该改用 Blazor WASM 项目。现在我已经用 Blazor WASM 替换了 Blazor Server,一切都按预期工作!
如果您想将 front-end 固定到现有的 API,请确保您添加的是 Blazor WASM,而不是 Blazor Server。
我有一个 servers
控制器,其操作符合...
[ApiController]
[Route("[controller]")]
[Consumes("application/json")]
public class ServersController : Controller
{
public ServersController(IMemoryCache memoryCache) => Cache = memoryCache;
private IMemoryCache Cache { get; }
[HttpGet(Name = "Get Servers")]
public IActionResult GetServers()
=> Ok(Cache.Get<List<ServerGetDTO>>(Context.ServerList));
}
...而且我还有一个剃须刀页面...
@page "/servers"
<PageTitle>Get Servers</PageTitle>
<h1>Gets The Servers (Only Via Response, For Now)</h1>
我正在添加 razor/blazor 内容 ...
builder.Services.AddRazorPages();
builder.Services.AddServerSideBlazor();
app.UseStaticFiles();
app.UseRouting();
app.UseEndpoints(endpoints => endpoints.MapRazorPages());
app.MapBlazorHub();
... 但是当我导航到 https://.../servers
时,我没有收到我期望的 JSON 响应。期望是导航到页面向端点发出 Get
请求,然后我将获得要在前端呈现的视图以及服务器列表作为 JSON 作为响应Get
电话。
我做错了什么?
更新 #1:在我的 API 之上添加 Blazor 之后,我现在注意到 Swagger returns HTML 在调用 https://.../servers
端点时,所以 HTML 文档和 JSON 响应似乎是相互排斥的。我几乎可以肯定我遗漏了什么,我会继续调查。
更新#2:好的,我已经弄明白了。既然我知道问题出在哪里,事后看来,这个问题感觉很愚蠢。这是我的第一个 Blazor 实验,现在我知道我是从对架构级别的技术的误解开始的。基本上,我已经将现有的 API Blazor Server 项目固定在了上面,而事实上,我应该改用 Blazor WASM 项目。现在我已经用 Blazor WASM 替换了 Blazor Server,一切都按预期工作!
如果您想将 front-end 固定到现有的 API,请确保您添加的是 Blazor WASM,而不是 Blazor Server。