我目前正在开发一个 PoC(概念证明)应用程序,前端使用 Blazor,后端使用 ac# web api 进行数据访问。
每次我想访问 api 时,我都会收到 ERR_CONNECTION_REFUSED。我确实有一个奇怪的设置。
- 我使用 gitpod 进行开发(在线 IDE,Visual Studio 代码在线)
- 整个事情都在虚拟 Ubuntu 服务器上运行
文件夹结构为:
blazor_poc
api
控制器
ApiRunningController.cs
Blazor 应用程序
页面
索引.razor
我需要从 Index.razor 调用 api。我这样调用 API:
protected override async Task OnInitializedAsync()
{
try
{
status = await Http.GetJsonAsync<string>("https://localhost:8394/ApiRunningController");
}
catch(Exception e)
{
requestSuccess = false;
status = "ERROR: " + e.Message;
}
}
这就是 API 配置的样子。launchSettings.json(仅“api”:{}部分):
"api": {
"commandName": "Project",
"launchBrowser": true,
"launchUrl": "apirunningcontroller",
"applicationUrl": "https://localhost:8394;http://localhost:8393",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
我在 Startup.cs 中的 ConfigureServices() 和 Configure() 方法:
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
services.AddCors();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseHttpsRedirection();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
app.UseCors(c => c
.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader()
);
}
API 控制器:
[ApiController]
[Route("[controller]")]
public class ApiRunningController : ControllerBase
{
// Some other code like initializing a logger in the constructor etc...
[HttpGet]
public string Get()
{
ApiModel model = new ApiModel();
return model.Status;
}
}
这是很多代码,我想我已经发布了重要的代码片段。如果我忘记了什么,请不要介意发表评论。我会尽快发布。