.NET Core API не работает после развертывания в Azure - PullRequest
1 голос
/ 12 октября 2019

У меня есть простое ядро ​​.net web api с угловым приложением на стороне клиента.

Когда я вызываю свой API локально (http://localhost:5000/api/auth/register), он работает без проблем. После развертывания приложения на Azure и его вызова (https://myapp.azurewebsites.net/api/auth/register), я получаю ошибку 400 Bad Request без каких-либо сообщений). .

Я пытался настроить службу приложений и сервер SQL на портале Azure, но я не уверен, что изменить.

AuthController.cs

        [HttpPost("register")]
        public async Task<IActionResult> Register(UserToRegisterDto userToRegister)
        {
            if (await AuthService.UserExists(userToRegister.UserName))
            {
                return BadRequest("Username already exists");
            }

            var userToCreate = new User() { UserName = userToRegister.UserName };

            await AuthService.Register(userToCreate, userToRegister.Password);

            // TODO: Change to return CreatedAtRoute
            return StatusCode(201);
        }

AuthService. cs

        public async Task<User> Register(User user, string password)
        {
            GenerateHashedPassword(user, password);

            await usersRepository.Create(user);

            return user;
        }

auth.service.ts

  private baseUrl = environment.apiUrl + 'auth/';

  public register(userToRegister: UserToRegister) {
    return this.http.post(this.baseUrl + 'register', userToRegister);
  }

environment.ts

export const environment = {
  production: false,
  apiUrl: 'http://localhost:5000/api/'
};

environment.prod.ts

export const environment = {
  production: true,
  apiUrl: 'api/'
};

1 Ответ

1 голос
/ 12 октября 2019

Сначала проверьте ваш журнал в веб-приложении Azure. При входе в ваше веб-приложение будет журнал.

Второй захват исключения проверки в вашем веб-приложении Azure, любое возникновение исключения будет захватываться с кодом состояния и подробностями

Наконец, попробуйте изменить свой api url следующим образом. Но я не думаю, что ошибка возникает из-за этого параметра

export const environment = {
  production: true,
  apiUrl: 'https://myapp.azurewebsites.net/api/'
};

Обновление для автоматического запуска переноса при развертывании новой версии в веб-приложении Azure вы можете добавить этот фрагмент кода

public class Startup
{
    ...

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddDbContext<MyDbContext>(...);

        ...
    }

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        UpdateDatabase(app);

        ...
    }

    private static void UpdateDatabase(IApplicationBuilder app)
    {
        using (var serviceScope = app.ApplicationServices
            .GetRequiredService<IServiceScopeFactory>()
            .CreateScope())
        {
            using (var context = serviceScope.ServiceProvider.GetService<MyDbContext>())
            {
                context.Database.Migrate();
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...