Ich muss eine POST-Methode in WebApi erstellen, damit ich Daten von der Anwendung an die WebApi-Methode senden kann. Ich kann den Header-Wert nicht abrufen.
Hier habe ich Header-Werte in die Anwendung eingefügt:
using (var client = new WebClient())
{
// Set the header so it knows we are sending JSON.
client.Headers[HttpRequestHeader.ContentType] = "application/json";
client.Headers.Add("Custom", "sample");
// Make the request
var response = client.UploadString(url, jsonObj);
}
Befolgen Sie die WebApi-Post-Methode:
public string Postsam([FromBody]object jsonData)
{
HttpRequestMessage re = new HttpRequestMessage();
var headers = re.Headers;
if (headers.Contains("Custom"))
{
string token = headers.GetValues("Custom").First();
}
}
Was ist die richtige Methode, um Header-Werte zu erhalten?
Vielen Dank.
c#
asp.net-mvc
asp.net-mvc-4
c#-4.0
asp.net-web-api
AndrewRalon
quelle
quelle
string token = headers.GetValues("Custom").FirstOrDefault();
? Bearbeiten: Ich habe gerade bemerkt, dass Sie dem ursprünglichen Qs-Stil entsprechen.headers.GetValues("somethingNotFound")
eine wirftInvalidOperationException
.beforeSend
in JQuery Ajax, um den Header zu senden?beforeSend
und es hat funktioniert.Angenommen, wir haben einen API Controller ProductsController: ApiController
Es gibt eine Get-Funktion, die einen Wert zurückgibt und einen Eingabekopf erwartet (z. B. Benutzername und Passwort).
Jetzt können wir die Anfrage von der Seite mit JQuery senden:
Hoffe das hilft jemandem ...
quelle
Eine andere Möglichkeit, die TryGetValues-Methode zu verwenden.
quelle
Für .NET Core:
Oder
quelle
Falls jemand ASP.NET Core für die Modellbindung verwendet,
https://docs.microsoft.com/en-us/aspnet/core/mvc/models/model-binding
Es gibt eine integrierte Unterstützung für das Abrufen von Werten aus dem Header mithilfe des Attributs [FromHeader]
quelle
Content-Type
ist keine gültige C #Probieren Sie diese Codezeile aus, die in meinem Fall funktioniert:
quelle
Wie bereits erwähnt, können Sie Folgendes tun: Wenn Ihr Header ein "-" oder ein anderes Zeichen enthält, das .Net nicht zulässt, können Sie Folgendes tun:
quelle
Für die WEB API 2.0:
Ich musste
Request.Content.Headers
stattdessen verwendenRequest.Headers
und dann erklärte ich eine Extestion wie unten
Und dann habe ich es auf diese Weise aufgerufen.
Ich hoffe es könnte hilfreich sein
quelle
Sie müssen die HttpRequestMessage aus dem aktuellen OperationContext abrufen. Mit OperationContext können Sie es so machen
quelle
Für die .net Core in GET-Methode können Sie Folgendes tun:
quelle