Register.cshtml
1.
``````xml
<button type="submit" class="btn btn-outline-primary btn-sm ml-4 mt-4" asp-page-handler="GenerateOtp" style=" width: 150px;" disabled="@Model.OtpProcessing">
@if (Model.OtpProcessing)
{
<div class="spinner-border spinner-border-sm" role="status">
<span class="visually-hidden">Loading...</span>
</div>
<span>GENERATING</span>
}
else
{
<span>GENERATE OTP</span>
}
</button>
Register.cshtml.cs
public void OnGet()
{
if (!string.IsNullOrEmpty(LoginPhoneNumber))
{
IsPhoneNumberPresent = true;
//LoginModel = new OtpRegisterVm { Username = LoginPhoneNumber, CountryCode = CountryCode };
}
else
{
IsPhoneNumberPresent = false;
}
}
public async Task<IActionResult> OnPostGenerateOtpAsync()
{
OtpProcessing = true;
if (string.IsNullOrEmpty(LoginModel.Username))
{
Notify.Add(TempData, false, "", "Phone Number required");
OtpProcessing = false;
return Page();
}
else if (LoginModel.Username.Length < 10)
{
Notify.Add(TempData, false, "", "Enter valid Phone Number");
OtpProcessing = false;
return Page();
}
// Display success message
//Notify.Add(TempData, true, $"OTP Generated successfully: {generatedOtp}", "");
var dto = new PhoneNumberDto { PhoneNumber = LoginModel.CountryCode + LoginModel.Username };
var response = await _apiService.GenerateRegisterOtp(dto);
if (response.IsSuccess)
{
Notify.Add(TempData, true, "OTP Generated successfully", "");
}
else
{
Notify.Add(TempData, false, "", response.Message);
}
OtpProcessing = false;
return RedirectToPage("/Auth/RegistrationForm");
}
Service.cs
public async Task<ResponseDto<string>> GenerateRegisterOtp(PhoneNumberDto dto)
{
var httpResponse = await _httpService.Post<PhoneNumberDto, ResponseDto<string>>(
"/api/identity/generateregisterotp", dto);
var responseBody = await httpResponse.GetBody();
if (string.IsNullOrEmpty(responseBody))
{
throw new ApplicationException("Empty response received from /api/identity/generateregisterotp.");
}
if (!httpResponse.Success)
//throw new ApplicationException(await httpResponse.GetBody());
throw new ApplicationException($"API returned an error: {responseBody}");
return httpResponse.Response;
}
Controller
[AllowAnonymous]
[HttpPost("generateregisterotp")]
public async Task<ResponseDto<string>> GenerateRegisterOTP(PhoneNumberDto phoneNumber)
{
try
{
var existingUser = await _context.GetAppUserByUsername(phoneNumber.PhoneNumber);
if (existingUser != null)
{
return new ResponseDto<string>(false, $"The {phoneNumber.PhoneNumber} is already registered");
}
var otp = new Random().Next(111947, 999999).ToString();
var result = await _context.RegisterSetOtpAsync(phoneNumber.PhoneNumber, otp);
if (result)
{
//await SendSms(phoneNumber, otp);
return new ResponseDto<string>(true, $"OTP sent successfully");
}
}
catch (Exception ex)
{
return new ResponseDto<string>(false, ex.Message);
}
return new ResponseDto<string>(false, "Server is not responding");
}
While generating OTP for new user, I am facing this issue of Status 404 error - HttpResponseMessage = {StatusCode: 404, ReasonPhrase: 'Not Found', Version: 1.1, Content: System.Net.Http.HttpConnectionResponseContent, Headers: