HTTP ERRAGE 405: Anforderung anstelle von Post in C#/. NET -Web -App mit AWS SNS und DynamoDB -IntegrationC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 HTTP ERRAGE 405: Anforderung anstelle von Post in C#/. NET -Web -App mit AWS SNS und DynamoDB -Integration

Post by Anonymous »

Ich habe eine C#/. Net -Web -App, die auf AWS gehostet wird. Ich versuche, eine Funktion hinzuzufügen, in der ein Kunde seine Telefonnummer eingibt und ein Code, um ein kostenloses Produkt zu erhalten, an sie gesendet wird. Ich benutze AWS SNS und DynamoDB. Ich teste es an einem lokalen Haus. Der Code, den ich geschrieben habe, ist unten.

Code: Select all

[HttpPost] // Ensures this action is for POST requests**
[Route("Home/FreeCoffee")]
public async Task FreeCoffee([FromBody] PhoneNumberRequest request)
{
if (string.IsNullOrEmpty(request.PhoneNumber))
{
return BadRequest(new { message = "Phone number is required." });
}

string dateKey = DateTime.UtcNow.ToString("yyyy-MM-dd") + "_Free1";

// Check if the offer already exists for this user today
var existingOffer = await _db.LoadAsync(request.PhoneNumber, dateKey);

if (existingOffer != null)
{
return Ok(new { message = $"Offer already issued: {existingOffer.Code}" });
}

// Generate new offer code
var newCode = GenerateOfferCode();
var offer = new OfferCode
{
PhoneNumber = request.PhoneNumber,
OfferDateOfferType = dateKey,
Code = newCode,
OfferType = "Free1",
Used = false,
ExpirationDate = DateTimeOffset.UtcNow.AddHours(24).ToUnixTimeSeconds() // Expires in 24 hours
};

// Save to DynamoDB
await _db.SaveAsync(offer);

// Send SMS via SNS
var message = $"Your offer code is: {newCode}. Use it before midnight!";
await _snsClient.PublishAsync(new PublishRequest
{
Message = message,
PhoneNumber = request.PhoneNumber
});

return Ok(new { message = $"Offer sent to {request.PhoneNumber}" });
}
< /code>


Submit

< /code>

document.getElementById("codeForm").addEventListener("submit", async function (event) {
event.preventDefault(); // Prevent form from making a GET request

const phoneNumber = document.getElementById("phoneNumber").value;
if (!phoneNumber) {
alert("Phone number is required!");
return;
}

try {
const response = await fetch('/Home/FreeCoffee', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ phoneNumber: phoneNumber })
});

if (!response.ok) {
const result = await response.json();
alert("Error: " + result.message);
} else {
const result = await response.json();
alert("Offer sent to: " + phoneNumber);
}
} catch (error) {
alert("Error: " + error.message);
}
});
< /code>
The error I am getting is HTTP error 405. I have checked the developer tools network tab and found this:
Request Method: GET
Status Code:
405 Method Not Allowed
Remote Address:
[::1]:5043
Referrer Policy:
strict-origin-when-cross-origin
allow: POST
content-length: 0
date: Wed, 19 Mar 2025 23:25:07 GMT
server: Kestrel
< /code>
If I am understanding this correctly, I am using a GET request but a POST request is expected. I have been trying to remedy this, without success.  Can anyone see what I am doing wrong? I would appreciate any help.
[b]Edited content to show the potential source of the Get/Post problem[/b]
                                       
[*]
[url=#]
Offers
[/url]
[list]

[*]
Coffee

[*]
Cookie

[/list]

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post