2016-08-04 38 views
0

ich den folgenden Code haben:Anfrage an eine andere MVC Aktion innerhalb einer Aktions

var url = Url.Action("JobDetailsPDF", "PdfController", new { orderid = model.OrderId }, Request.Url.Scheme); 

var request = new HttpRequestMessage(HttpMethod.Get, url); 
request.Headers.TryAddWithoutValidation("Cookie", Request.Headers["Cookie"]); 

var client = new HttpClient(); 

var response = await client.SendAsync(request); 
var result = await response.Content.ReadAsByteArrayAsync(); 

Das Autorisieren Attribut scheint die Anforderung an den Login-Bildschirm zu halten Umleitung, obwohl die Auth-Cookies auf die Anfrage hinzugefügt werden.

Warum kann ich keine Cookies an eine andere Aktion innerhalb der gleichen Site senden und wenn das möglich ist, warum leitet das Attribut authorize die Anfrage um, wenn die Cookies hinzugefügt werden?

Dank

+0

Sie sollten die Logik in der Aktion, die Sie aufrufen möchten, in eine eigene Klasse verschieben und diese in einer beliebigen Aktionsmethode verwenden. Auf diese Weise werden Sie nicht unnötigerweise über eine HTTP-Anfrage (und den damit verbundenen Overhead) aufgerufen. – DavidG

Antwort

2

, dass in der Regel keine gute Idee ist HTTP-Anforderung von Back-End-App auf die gleiche Backend-App zu machen.

Sie können die Logik von der JobDetailsPDF-Aktion unter PdfController in eine allgemeine Klasse verschieben, die an beiden Stellen verwendet werden kann: JobDetailsPDF und Ihre aktuelle Codestelle.

+0

Danke für Ihre Antwort, ich habe den Refactor gestartet, als ich anfing, auf Probleme zu stoßen, aber ich wollte verstehen, warum Cookies von einem gesendet werden Aktion zum nächsten hat nicht funktioniert. Weißt du zufällig? – Jamez

+0

Die erste Anfrage kommt vom Client-Browser (mit Authentifizierungs-Cookies), während die zweite Anfrage von Ihrem Backend-Server ausgeführt wird, der keine Authentifizierungs-Cookies enthält. – serhiyb

+0

Fügen die Cookies aus der eingehenden Anfrage nicht den Authentifizierungs-Cookie hinzu? – Jamez