簡體   English   中英

.NET Core API 在 Azure 上部署后無法正常工作

[英].NET Core API not working after deploying on Azure

我有一個簡單的 .net 核心 web api 在客戶端上帶有 ZD18B8624A0F5F7221DA7B82365FC5。

當我在本地( http://localhost:5000/api/auth/register )調用我的 api 時,它可以正常工作。 將應用程序部署到 azure 並調用它( 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);
        }

身份驗證服務.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);
  }

環境.ts

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

環境.prod.ts

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

首先在您的 azure web 應用程序中檢查您的日志,當您訪問 web 應用程序時會出現日志

您的 azure web 應用程序中的第二次檢查異常捕獲將使用狀態碼和詳細信息進行捕獲

最后嘗試像這樣更改您的 api url。 但我不認為錯誤來自這個設置

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM