Ошибка при доступе к ASP.NET Core WebApi из Ionic - PullRequest
0 голосов
/ 10 июня 2018

У меня есть некоторые проблемы с вызовом моего ASP.NET Core WebAPI из моего приложения Ionic.

Я вижу в инструментах разработчика, что данные загружаются правильно, но Ionic выдает мне сообщение об ошибке:

сообщение об ошибке от Ionic: enter image description here

данные, загруженные из API:

enter image description here

В API включен CORS:

 public class Startup
 {
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddCors();   
        services.AddDbContext<TodoContext>(opt =>
            opt.UseInMemoryDatabase("TodoList"));
        services.AddMvc()
            .SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
    }

    public void Configure(IApplicationBuilder app)
    {
        app.UseCors(builder => builder.WithOrigins("http://localhost"));
        app.UseMvc();
    }
}

Я думаю, чтоошибка вызвана ионной или угловой.Когда я загружаю данные из публичного API, все работает нормально.Я также пытался получить доступ к API с ssl и без.

Если у вас есть какие-либо вопросы, не стесняйтесь спрашивать меня в комментариях.

Редактировать

Вот как я называю API:

@Injectable()
export class RestProvider {

apiUrl = 'https://localhost:5001/api';

constructor(public http: HttpClient) { }

getTodoItems() {
  return new Promise(resolve => {
    this.http.get(this.apiUrl + '/todo').subscribe(data => {
        resolve(data);
      }, err => {
        console.log(err);
      });
    });
  }
}

, а это мой контроллер:

[Route("api/[controller]")]
[ApiController]
public class TodoController : ControllerBase
{
    private readonly TodoContext _context;

    public TodoController(TodoContext context)
    {
        _context = context;

        if (_context.TodoItems.Count() == 0)
        {
            _context.TodoItems.Add(new TodoItem { Title = "Item1" });
            _context.TodoItems.Add(new TodoItem { Title = "Item2" }); 
            _context.SaveChanges();
        }
    }

    [HttpGet]
    public ActionResult<List<TodoItem>> GetAll()
    {
        return _context.TodoItems.ToList();
    }
}

Ответы [ 2 ]

0 голосов
/ 10 июня 2018

Вы можете использовать файл ionic.config.json для настройки прокси в вашем приложении:

{
  "name": "proxy-example",
  "app_id": "",
  "proxies": [
    {
      "path": "/api",
      "proxyUrl": "http://cors.api.com/api"
    }
  ]
}

Затем при выполнении http-вызова:

httpClient.get(proxyHost + '/api');

Дополнительная информация Ионный Блог

0 голосов
/ 10 июня 2018

исправили это, добавив номер порта:

public void Configure(IApplicationBuilder app)
{
    app.UseCors(builder => builder.WithOrigins("http://localhost:8100").AllowAnyMethod());
    app.UseMvc();
}
...