405 Methode nicht erlaubt Web API
Dieser Fehler ist sehr Häufig, und ich habe versucht, alle Lösungen und nicht von Ihnen arbeitete. Ich habe deaktiviert WebDAV-publishing " im control panel Hinzugefügt und diese auf meine web-config-Datei:
<handlers>
<remove name="WebDAV"/>
</handlers>
<modules runAllManagedModulesForAllRequests="true">
<remove name="WebDAVModule"/>
</modules>
Der Fehler weiterhin besteht. Dies ist die Steuerung:
static readonly IProductRepository repository = new ProductRepository();
public Product Put(Product p)
{
return repository.Add(p);
}
Methode Durchführung:
public Product Add(Product item)
{
if (item == null)
{
throw new ArgumentNullException("item");
}
item.Id = _nextId++;
products.Add(item);
return item;
}
Und das ist, wo die exception geworfen wird:
client.BaseAddress = new Uri("http://localhost:5106/");
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
var response = await client.PostAsJsonAsync("api/products", product);//405 exception
Irgendwelche Vorschläge?
InformationsquelleAutor der Frage Xardas | 2013-03-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Buchung vom client:
nicht Putin.
Ihre Web-API-Methode akzeptiert nur Anfragen.
Also:
InformationsquelleAutor der Antwort Darin Dimitrov
Hatte ich die gleiche Ausnahme. Mein problem war, dass ich verwendet hatte:
SOLLTE
InformationsquelleAutor der Antwort Llad
Ich habe versucht, viele Dinge zu bekommen DELETE-Methode arbeiten (ich war immer 405 Methode nicht erlaubt-web-api) , und schließlich fügte ich [Route("api - /scan - /{id}")] zu meinem controller und war gut zu arbeiten.
hoffe, dieser Beitrag hilft einigen.
InformationsquelleAutor der Antwort user2662006
Mein problem entpuppte sich als Attribut-Routing in WebAPI. Ich erstellte eine benutzerdefinierte route, und Sie behandelt es wie ein BEKOMMEN statt WebAPI zu entdecken, es war ein POST
Ich wusste, es musste etwas albern (das verbraucht den ganzen Tag)
InformationsquelleAutor der Antwort Nexxas
War ich immer der 405 auf meinen Anruf BEKOMMEN, und das problem stellte sich heraus, dass ich den Namen der parameter in der server-side-Methode
Get(int formId)
und ich brauchte, um die route zu ändern, oder benennen Sie esGet(int id)
.InformationsquelleAutor der Antwort Sako73
Chrome öfter mal versucht, um
OPTIONS
rufen Sie, bevor Sie einen Beitrag. Er tut dies, um sicherzustellen, dass die CORS-Header sind in Ordnung. Es kann problematisch sein, wenn Sie nicht sind, handling derOPTIONS
rufen Sie in der API-controller.InformationsquelleAutor der Antwort Nate Zaugg
Können Sie auch den 405 Fehler, wenn die sagen, deine Methode erwartet einen parameter, und Sie werden nicht übergeben.
Funktioniert das NICHT ( Fehler 405)
HTML-Anzeigen/Javascript
Web-Api:
So, wenn die Signatur der Methode ist wie oben, dann müssen Sie tun:
HTML-Anzeigen/Javascript
InformationsquelleAutor der Antwort Tom Stickel
Wenn Sie eine route wie
Müssen Sie verwenden die exakt gleichen parameter name der Methode, z.B.
Wenn Sie nicht bestehen, die exakt die gleichen parameter erhalten Sie möglicherweise die Fehlermeldung "405 Methode nicht erlaubt", da die route nicht mit dem Antrag und WebApi auf einem anderen controller-Methode mit anderen erlaubte HTTP-Methode.
InformationsquelleAutor der Antwort roylac
Diese keine Antwort auf Ihre spezifische Frage, aber wenn ich das gleiche problem hatte ich hier gelandet und ich dachte mir, dass möglicherweise mehr Menschen das gleiche tun.
Das problem, das ich hatte war, dass ich hatte indeliberately erklärt meine Get-Methode als statische. Ich verpasste diesem einen ganzen Vormittag, und es verursacht keine Warnungen von Parametern oder ähnliches.
Falsch:
Richtig:
InformationsquelleAutor der Antwort Per Stolpe
Konnte ich NICHT lösen. Ich hatte CORS aktiviert und arbeitet solange die POST zurückgegeben void (ASP.NET 4.0 - WEBAPI 1). Als ich versuchte, eine HttpResponseMessage, begann ich immer die HTTP 405-Antwort.
Basierend auf Llad ' s Antwort oben, ich nahm einen Blick auf meine eigenen Referenzen.
Hatte ich das Attribut [System.Web.Mvc.HttpPost] aufgeführten meinem POST-Methode.
Änderte ich diese verwenden:
Diese Feste meine Probleme. Ich hoffe, dies hilft jemand anderes.
Der Vollständigkeit halber, hatte ich das folgende in mein web.config:
InformationsquelleAutor der Antwort Spencer Sullivan
Ich bin zu spät zu dieser party, aber so gar nichts war entweder brauchbare oder arbeiten in den meisten Fällen, ist hier, wie das war endlich gelöst für mich.
Auf dem server der Website/Dienstleistung moderiert wurde, wurde eine Funktion benötigt!
HTTP-AKTIVIERUNG!!!
Dieser arbeitete dann sofort!
Das war Schmelzen mein Gehirn
InformationsquelleAutor der Antwort Monolithcode
Hier ist eine Lösung
<handlers accessPolicy="Read, Script">
<remove name="WebDAV" />
</handlers>
docs.microsoft.com Lösung Artikel
und entfernen von WebDAV-Module
<remove name="WebDAVModule" />
InformationsquelleAutor der Antwort Danushka Amith Weerasingha
Dieser Fehler kann auch auftreten, wenn Sie versuchen, eine Verbindung zu http, während der server auf https.
War es ein bisschen verwirrend, weil mein get-Anfragen waren OK, das problem war nur mit post-Anfragen.
InformationsquelleAutor der Antwort FrankyHollywood
[HttpPost] ist überflüssig!!!
InformationsquelleAutor der Antwort user3963793
überprüfen Sie in Ihrem Projekt .csproj-Datei und ändern Sie
Ihre website-url wie diese
InformationsquelleAutor der Antwort Ankit
Andere mögliche Problem, das bewirkt das gleiche Verhalten ist die Standard-Parameter in den Arbeitsplan. In meinem Fall wurde der regler liegt und instanziiert ist richtig, aber der BEITRAG wurde gesperrt, weil der Standard -
Get
angegebene Aktion:InformationsquelleAutor der Antwort Eadel