c# - .NET Core API fungerar inte efter att ha distribuerats på Azure


Jag har en enkel .net core web API med en Angular-app på klientsidan.

När jag anropar mitt API lokalt (http://localhost:5000/api/auth/register) fungerar det utan några problem. Efter att ha distribuerat appen till Azure och anropat den (https://myapp.azurewebsites.net/api/auth/register) får jag ett 400 Bad Request-fel utan något meddelande.

Jag försökte konfigurera app-tjänsten och SQL-servern på Azure-portalen, men jag är inte säker på vad jag borde ändra.

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);
  }

miljö.ts

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

miljö.prod.ts

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

Svar #1

Kontrollera först din logg i din Azure-webbapp, det skulle finnas logg när du får åtkomst till din webbapp

Andra kontrollen av undantagsfångst i din Azure-webbapp, eventuella undantag som uppstår kommer att fångas med statuskod och detaljer

Försök äntligen att ändra din API-URL så här. Men jag tror inte att felet kommer från denna inställning

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

Uppdatera för att automatiskt köra migrering när du distribuerar ny version i Azure Web App kan du lägga till dessa kodsnuttar

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();
            }
        }
    }
}