gpt4 book ai didi

c# - HttpGet 在 vuejs 上抛出 500 错误但与 postman 一起工作

转载 作者:行者123 更新时间:2023-12-03 23:02:29 25 4
gpt4 key购买 nike

我有一个使用我的 API 的客户端。我在 API 上有一个端点,如下所示:

[Route("api/account")]
[ApiController]
public class AccountController : BaseController
{
private readonly IIdentityProvider _identityProvider;

private string UserId
{
get
{
return User?.FindFirst("AspNetUserId")?.Value;
}
}

public AccountController(IIdentityProvider identityProvider)
{
_identityProvider = identityProvider;
}

[HttpGet]
public IActionResult GetAccount()
{
var user = _identityProvider.GetByAspNetUserId(UserId);
var account = new Account
{
UserName = user.UserName,
Email = user.Email,
EmailConfirmed = user.EmailConfirmed,
PhoneNumber = user.PhoneNumber,
PhoneNumberConfirmed = user.PhoneNumberConfirmed,
TwoFactorEnabled = user.TwoFactorEnabled,
SmsTwoFactorEnabled = user.SmsTwoFactorEnabled
};

return Ok(account);
}
}
我的客户端 Vue.js 应用程序像这样调用这个 Action :
async getAccount(): Promise<Account> {
const result = await this.axios.get(`${this.apiUrl}/account`);
return this.jsonConvert.deserializeObject(result.data, Account);
}
每当这被调用时,我都会收到 500 错误。我在 Action 的开始行放置了一个断点,但它没有被调用。但是当我通过 Postman 调用相同的操作时,它会起作用。 2个请求没有什么不同。
但是,如果我更改 [HttpGet][HttpGet("test")并将 vue.js 客户端更改为 await this.axios.get( ${this.apiUrl}/account/test );它工作并达到断点。
谁能解释我在这里做错了什么?
编辑:
以下是我浏览器的检查器中的内容,您可以看到这里没有有用的信息。它只是说 500 内部错误而没有响应:
enter image description here
这是我的 Startup.cs 文件的配置方法:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseRouting();
app.UseCors("AllowAll");
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
endpoints.MapDefaultControllerRoute();
});
}

最佳答案

它不是 GET 请求失败,而是 OPTIONS 请求失败。 Vue.js 对请求进行了预检。所以如果你的端点有一个 GET 动词,当用 OPTIONS 调用时它会抛出一个错误。
您有 2 个解决方案:

  • 简单的解决方案,为您的端点允许 OPTIONS 动词,检查它并返回 200。
  • 您可以查看这个问题的答案并做出类似的解决方案:cors issue with vue and dotnet并为所有 OPTIONS 请求实现自动响应。

  • 作为引用,您可以阅读 preflight-requests

    关于c# - HttpGet 在 vuejs 上抛出 500 错误但与 postman 一起工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64760766/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com