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.
[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]
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][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." }); }
// 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; }
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]
Das Problem tritt auf, wenn ich das Formular absende. Trotz der Verwendung einer POST-Methode im HTML-Formular und der Sicherstellung, dass meine Ansicht POST-Anfragen korrekt verarbeitet, erhalte...
Ich arbeite an einem Flask-Projekt, bei dem ich Daten von einem PyScript (das im Browser läuft) mithilfe einer POST-Anfrage an das Flask-Backend senden muss. Wenn ich jedoch versuche, eine...
Ich arbeite an einer C# Web-API, die eine bestimmte Aktion mit einem Drittanbieter-API-1 ausführt, das gleichzeitig für Geschwindigkeit ausgeführt wird. Sobald ich meine Ausgabe vom...
Ich versuche, eine einfache Nachricht zwischen zwei Anwendungen mit Masstransit und AWS/LocalStack zu senden:
public record AddContextMessage
{
public required string Host { get; init; } =...
Ich habe ein öffentliches Microsoft -Formular. private async void TryMicrosoftFormsURLDataSend() {
Dictionary postData = new Dictionary() {
{ answers , }, // Replace with the field IDs and the...