在Azure上部署后,.NET Core API无法正常运行

时间:2019-10-12 09:11:44

标签: c# angular typescript asp.net-core asp.net-core-mvc

我有一个简单的.net核心网络api,在客户端具有angular应用程序。

当我在本地调用我的api(http://localhost:5000/api/auth/register)时,它可以正常工作。将应用程序部署到天蓝色并调用(https://myapp.azurewebsites.net/api/auth/register)之后,我收到了400 Bad Request错误,没有任何消息。

我试图在azure门户上配置应用程序服务和sql服务器,但是我不确定要更改什么。

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 个答案:

答案 0 :(得分:1)

首先检查您的Azure Web应用程序中的日志,然后在访问Web应用程序时会有日志

在天蓝色的Web应用程序中捕获第二次检查异常,任何发生的异常都会通过状态代码和详细信息进行捕获

最后尝试像这样更改您的api网址。但是我不认为错误来自此设置

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

在Azure Web应用程序中部署新版本时,更新为自动运行迁移,您可以添加以下代码段

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