Я пытаюсь развернуть приложение веб-сборки Blazor, размещенное на ядре asp.net, в Netlify. Я опубликовал окончательную версию проекта Server в каталоге на своем рабочем столе и загрузил его на github. Я установил каталог публикации Netlify на wwwroot, и сайт отлично отображается. Однако, если я попытаюсь вызвать контроллер api, он вернет 404. В частности, вот мой код:
//Register.razor in the Client project
if (Model.Password.Length >= 6 && Model.Password == Model.ConfirmPassword)
{
await HttpClient.PostAsJsonAsync<RegisterModel>("api/Register/Post", Model);
NavigationManager.NavigateTo("/");
}
//In my controller
[Route("api/Register")]
public class RegisterController : Controller
{
private UserContext UserContext { get; set; }
private IHasher Hasher = new Pbkdf2Hasher();
public RegisterController (UserContext userContext)
{
UserContext = userContext;
}
[RequireHttps]
[HttpPost]
[Route("Post")]
public async Task Post([FromBody]RegisterModel model)
{
var user = new UserModel
{
Email = model.Email,
Password = Hasher.Hash(model.Password)
};
await UserContext.AddAsync(user);
await UserContext.SaveChangesAsync();
}
}
Я отправляю запрос URL: https://(NetlifyDefaultDomain)/api/Register/Post . Однако я получаю ответ 404. На localhost все работает нормально. Я предполагаю, что есть параметр, который мне нужно где-то изменить, чтобы URL-адрес запроса работал. Я пытался поискать, но мне не удалось найти руководство. Что мне нужно изменить? Спасибо
Изменить
Вот файл Program.cs моего клиентского проекта
public class Program
{
public static async Task Main(string[] args)
{
var builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.RootComponents.Add<App>("app");
builder.Services.AddTransient(sp => new HttpClient {
BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
builder.Services.AddBlazoredLocalStorage();
builder.Services.AddAuthorizationCore();
builder.Services.AddScoped<AuthenticationStateProvider,
ApiAuthenticationStateProvider>();
builder.Services.AddScoped<IAuthService, AuthService>();
await builder.Build().RunAsync();
}
}
Целевая платформа - netstandard2.1 и webassembly 3.2.0.