【发布时间】:2022-12-10 12:16:40
【问题描述】:
我正在尝试从本机反应调用我的 asp.net api,但它总是返回网络错误。我已将我的 api cors 策略配置为接受所有来源、所有方法和所有标头。我正在使用 expo 在我的 ios 手机上运行本机反应应用程序,我将 url 配置为 https,因为我已经阅读了默认情况下 ios 阻止 http 请求。我尝试使用 localhost:{port} 作为我的 url 和我服务器的 ip 地址,但没有任何效果。我已经在这个问题上停留了 3 天,非常感谢任何帮助。
我的 C# 代码:
builder.Services.AddCors(opt =>
{
opt.AddPolicy("CorsPolicy", policy =>
{
policy.AllowAnyMethod().AllowAnyHeader().AllowAnyOrigin();
});
});
var app = builder.Build();
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
//app.UseHttpsRedirection();
app.UseCors("CorsPolicy");
app.UseAuthentication();
app.UseAuthorization();
app.MapControllers();
app.Run();
我的 get 请求是一个非常简单的 get 请求,用于测试目的
[AllowAnonymous]
[HttpGet("Get")]
public async Task<ActionResult> Get()
{
return Ok("test");
}
我的本机代码调用 get 方法:
let getEmployees = () => {
fetch("https://localhost:7287/get")
.then((res) => {
console.log(res.status);
console.log(res.headers);
return res.json();
})
.then(
(result) => {
console.log(result);
},
(error) => {
console.log(error);
}
);
};
在我的本机反应代码中,我使用的是本地主机,但我也尝试使用我的服务器的 IP 地址,但我仍然收到网络请求失败。
这是我从本机反应中得到的错误
Network request failed
at node_modules\whatwg-fetch\dist\fetch.umd.js:541:17 in setTimeout$argument_0
at node_modules\react-native\Libraries\Core\Timers\JSTimers.js:214:12 in _allocateCallback$argument_0
at node_modules\react-native\Libraries\Core\Timers\JSTimers.js:112:14 in _callTimer
at node_modules\react-native\Libraries\Core\Timers\JSTimers.js:357:16 in callTimers
at node_modules\react-native\Libraries\BatchedBridge\MessageQueue.js:417:4 in __callFunction
at node_modules\react-native\Libraries\BatchedBridge\MessageQueue.js:114:6 in __guard$argument_0
at node_modules\react-native\Libraries\BatchedBridge\MessageQueue.js:368:10 in __guard
at node_modules\react-native\Libraries\BatchedBridge\MessageQueue.js:113:4 in callFunctionReturnFlushedQueue
最后要注意的一件事是,我所有的 api 端点都可以在浏览器、邮递员和 swagger 上完美运行。我什至在一个简单的 react.js 项目上尝试过它们并且它们有效。问题仅发生在 React Native 项目上。任何帮助将不胜感激。
【问题讨论】:
-
你能试试 ngrok.io 吗?
-
您需要能够从手机访问获取网址。在手机上的浏览器中检查它。
-
@dev404 ngrok 成功了!非常感谢,如果您可以将此作为答案发布以便我批准,那将非常有帮助。
标签: javascript react-native api asp.net-web-api asp.net-core-6.0